外键上的SQL索引

时间:2018-05-22 10:04:05

标签: mysql sql

当我在tbl1上加入2个表tbl2column1时,其中column1tbl1上的主键。假设column1未自动编入索引,我应该在tbl1.column1tbl2.column1上创建索引,还是仅在tbl2.column1上创建索引。每个表的行数是否会影响该选择?

2 个答案:

答案 0 :(得分:0)

通常是的,因为通常你会想要在某个时候反过来加入。

答案 1 :(得分:0)

主键 自动编入索引。没有办法解决这个问题(这就是"独特约束的唯一约束的实现方式)。所以,tbl1.column1有一个索引。不需要其他索引。

至于tbl2.column2,你应该有一个索引。如果您明确声明外键关系,MySQL会创建一个索引。因此,使用显式声明,不需要其他索引。注意:并非所有数据库都适用。

索引的存在不会改变查询结果,也不会改变表格中的行数,因此我不了解您的最终问题。索引实现关系完整性并改善(希望!)某些类型的查询的性能