如果某个表的索引为(A,B, C,D)
,那么是否有理由同时拥有索引(A,B, Y,Z)
或(B,A, C,D)
?
我要问的是,这两个都提供了一个机会来混合索引的部分,在第一种情况下是前缀A,B
,在第二种情况下是后缀C,D
,允许复杂索引以较低的成本添加。也就是说,我从来都没有完成这项工作,我想知道这两个索引是否很少或没有优势,或者我是否错过了什么。
答案 0 :(得分:1)
在某些情况下,同时拥有索引(A,B,C,D)
和(A,B,Y,Z)
是有意义的。如果你认为A& B是经常使用的柱子,它们不是非常有选择性的,而C& C的组合。 D或Y& Z更具选择性,但使用频率较低。或者在A& B本身就是有选择性的,但是对于某些查询也有选择C& C的覆盖索引是有用的。 D或Y& Z.甚至是(A,B,C,D)
和(A,B,Y,Z)
都必须唯一的情况。您甚至可以提出在(A,B)
上建立第三个索引值得的情况,因为您希望对仅指定A& A的查询进行索引范围扫描。 B尽可能高效。但这些往往是不寻常的情况。
我不确定我是否有机会将索引混为一谈。我不熟悉任何允许多个索引使用相同索引结构的数据库引擎,如果这是你的建议。