当我在tbl1
上加入2个表tbl2
,column1
时,其中column1
是tbl1
上的主键。假设column1
未自动编入索引,我应该在tbl1.column1
和tbl2.column1
上创建索引,还是仅在tbl2.column1
上创建索引。每个表的行数是否会影响该选择?
答案 0 :(得分:0)
通常是的,因为通常你会想要在某个时候反过来加入。
答案 1 :(得分:0)
主键 自动编入索引。没有办法解决这个问题(这就是"独特约束的唯一约束的实现方式)。所以,tbl1.column1
有一个索引。不需要其他索引。
至于tbl2.column2
,你应该有一个索引。如果您明确声明外键关系,MySQL会创建一个索引。因此,使用显式声明,不需要其他索引。注意:并非所有数据库都适用。
索引的存在不会改变查询结果,也不会改变表格中的行数,因此我不了解您的最终问题。索引实现关系完整性并改善(希望!)某些类型的查询的性能