一个完全是mysql新手的问题。我试图构建一个包含机器部件(螺钉、支架、圆柱体等)信息的表,每个部件对应于该部件所属的机器。数据库的设计应确保每当客户机从表中读取数据时,都会选择一台指定机器的所有部件。我试图找出从磁盘读取属于某一类别的所有行的最快方法。
排序表不是一个选项,因为许多人可能会同时向表中添加行。为每台机器使用一个表也不实用,因为可能会创建新的机器。我希望它必须处理大量的插入和选择操作,但几乎没有删除操作。我想出了一个计划来快速识别属于任何机器的每个零件,我来问问它是否实用:
包含机器零件数据的每一行将包含同一机器上一个零件和下一个零件的行号。一个单独的表格将包含出现在表格上的每台机器最后一部分的行号。脚本可以跟随这些“指针”列表,跳转到表的不同部分,直到找到所有部分。
热释光;博士
这种按行号搜索行的方法是否比按整数主键搜索快(因为主键不一定表示表上的位置)?会快多少?与使用索引相比,它会产生显著的性能改进吗?
1条答案
按热度按时间llycmphe1#
这将是一个可怕的方法。选择符合某些条件的行是mysql(或任何其他db引擎)的基本特性。
只需创建一个名为
machine_id
在零件表中,为每台机器指定一个id。你可以把你的机器放在一个
machines
表中使用它们的主键machine_id
磁场parts
table。那么,要取回42号机器的所有零件,您所要做的就是:
SELECT * FROM parts WHERE machine_id = 42;
如果您的数据库是海量的,您也可以考虑索引machine_id
更好的表现。