我认为我的标题非常 self 解释,但我将在下面概述我正在做的事情。
一个人与一个城镇相连。这个镇与一个县相连。县与国家相连。一个国家有很多县。一个县也有很多城镇。话虽如此,很多人可能来自同一个城镇。
在我的数据库中,我有一个单独的表,用于显示人员、城镇、县和国家/地区。为了获得完整的用户记录,我在记录集上对表进行了 LEFT JOIN。这是我作为一个单一的人所做的事情的简化版本,分布在更多的 table 上。使用外键会加快查询的执行速度吗?即使只是速度略有提高或资源使用量减少,我也会感兴趣。
我计划的规模非常大,因此执行时间和资源使用量可能会有用。对于从数据库返回的一个人,我有大约 5-6 个连接用于多个表。
编辑 到目前为止的答案我想指出我正在使用主键和唯一键为每个表编制索引。此外,数据集可能会在一个表(人员)中快速添加多达数百万行,因此性能是关键。
最佳答案
外键不会直接加速查询的执行。它们确实有间接的影响,因为它们保证被引用的列被索引。而索引会对性能产生影响。
正如您描述的问题,所有连接关系都应包括其中一个表的主键。生成的查询应该非常有效地执行。
我不会担心查询有 5 或 6 个连接——除非您有非常大量的数据(不止一个表有数百万行)。或者您处于内存严重受限的环境中。
关于mysql - 使用外键是否加速表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29399065/