我有一个表T1,其中2列是c1和c2。它们是表格U1中col c3的外键引用列。
查询类似于"select ....... from T1, U1 as Ux and U1 as Uy where T1.c1 = 'xyz' and T1.c1 = Ux.c3 and T1.c2 = Uy.c3"
如果编入索引,哪个col会给出最佳结果。
c1
单独 或c1
和 c2
的组合? ?
答案 0 :(得分:0)
您可以使用EXPLAIN,只需将两种情况放在一起。自己尝试一下,您就可以轻松找到更好的查询
答案 1 :(得分:0)
加入怎么样?
SELECT * FROM T1
INNER JOIN U1 ON U1.c3=T1.c1 AND U1.c3=T1.c2
WHERE T1.c1 = 'xyz'
我真的没有得到你想做的事情,但是试图从这个c1和c2得到任何东西必须是相同的。
答案 2 :(得分:0)
只要您的“c1”列是查询的唯一部分,并且在复合索引(c1,c2)的情况下它位于索引的第一个位置,那么它就没有实际影响。它仍然会被优化。如果“c1”处于第二个位置,那么没有好......因为它本质上必须循环通过每个c2来匹配的c1。也就是说,如果你的c2列是一个像varchar 1000字符串那样糟糕的值,它会扼杀,因为它必须考虑索引键长度和额外的分页。但是,无论如何,对这种组合的索引都不会被认为是常见的。