答案 0 :(得分:5)
a.fk
设置为b.pk
上的外键 - b.pk
已编入索引b.pk
已编入索引a.fk
设置为b.pk上的外键 - b.pk
未编入索引b.pk
未编入索引答案 1 :(得分:1)
索引和非索引版本之间的性能差异最大,但是它是更快还是更慢取决于它是选择还是插入。索引和外键约束减慢了插入速度,但加速选择(索引)或使数据更可靠(FK)。由于通常大多数插入物的速度都没有明显减慢(除非您正在进行大型体积插入),因此获得FK和索引通常符合您的最佳利益。
答案 2 :(得分:1)
我会同意Lieven的回答。只是回答你的奖金问题,即你从创建索引中获得了多少性能提升,答案就是“这取决于”。
如果一个或两个表都很小并且它们是查询中唯一的两个表,则性能增益可能会小到零。当记录数量很少时,有时只读取所有记录而不是使用索引更快。数据库引擎应该足够聪明,可以解决这个问题 - 这就是“查询优化的全部内容”。
同样,如果您涉及其他表和其他选择标准,则数据库引擎可能决定不使用此索引,并且查找记录的其他方式更快。</ p>
另一方面,如果您有两个非常大的表,则在用于连接它们的字段上创建索引可以将运行时间缩短99%或更多。
这就是为什么学习阅读数据库引擎上的解释计划是一个好主意。如果查询需要很长时间,请运行解释计划并查看它正在执行的操作。通常,创建一个好的索引可以显着改善查询。