mySQL - 按行号搜索行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mySQL - 按行号搜索行?相关的知识,希望对你有一定的参考价值。

来自mysql新手的问题。我正在尝试构建一个包含有关机器零件(螺钉,支架,气缸等)信息的表格,每个零件对应于该零件所属的机器。将设计数据库,以便每当客户端从表中读取时,将选择来自一个指定机器的所有部件。我试图找出可以从磁盘读取属于某个类别的所有行的最快方法。

排序表不是一个选项,因为很多人可能会一次向表中添加行。由于可能会创建新计算机,因此每台计算机使用一个表也不实用。我希望它必须处理大量的INSERT和SELECT操作,但几乎没有DELETE操作。我想出了一个快速识别属于任何机器的每个部件的计划,我来问一下它是否实用:

包含机器部件数据的每一行将包含前一部件的行号和同一机器的下一部件。单独的表将包含表中显示的每台计算机的最后一部分的行号。脚本可以跟随这些“指针”的列表,跳到表的不同部分,直到找到所有部分。

TL; DR

这种通过行号搜索行的方法是否比通过整数主键搜索更快(因为主键不一定表示表上的位置)?它会快多少?与使用索引相比,它会产生明显的性能提升吗?

答案

这将是一个可怕的方法。符合某些标准的Selecting行是MySQL(或任何其他数据库引擎真正......)的基本特征。

只需在零件表中创建一个名为machine_id的列,并为每台机器提供一个id。 您可以将您的机器放在machines表中,并在machine_id表的parts字段中使用它们的主键。

然后,您需要做的就是检索机器42的所有部件: SELECT * FROM parts WHERE machine_id = 42;

如果您的数据库很大,您也可以考虑使用indexing machine_id列以获得更好的性能。

以上是关于mySQL - 按行号搜索行?的主要内容,如果未能解决你的问题,请参考以下文章

如何从文件中读取特定行(按行号)?

Shell脚本如何实现对一个文件按关键字行来分成若干个小文件?

工商银行开户行行号是啥

Ruby CSV - 获取当前行/行号

Mysql获取目标行号±2行

如何让VIM显示行号