mySQL - 按行号搜索行?

问题描述 投票:0回答:1

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

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

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

TL; DR

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

mysql indexing row
1个回答
0
投票

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.