zin*_*ing 6 index index-tuning
这是关于索引的最常见问题之一:是为 where 子句的每一列设置一个索引还是为所有列设置一个索引更好?在大多数情况下,答案非常简单:多列的索引更好——即串联索引或复合索引。“连接索引”详细解释了它们。
在这种情况下,我完全可以理解这个断言:
TABLE( A,B,C )?
Indexing 1: Index A, Index B, Index C
Indexing 2: Index (A,B,C)
Query: JOIN ON X.B=B AND X.C=C
Run Code Online (Sandbox Code Playgroud)
因为在这种情况下,索引 2 根本无法使用(我知道例外情况)
但在这种情况下:
TABLE( A,B,C )?
Indexing 1: Index A, Index B, Index C
Indexing 2: Index (A,B,C)
Query: JOIN ON X.A=A X.B=B AND X.C=C
Run Code Online (Sandbox Code Playgroud)
我认为索引 2 更好,它只需要遍历 1 个索引树而不是 3 个,对吗?
小智 7
原作者在此。
引用的意思如下:
在您的第一个查询中,仅过滤 B 和 C,什么会更好:
Indexing 1: Index B, Index C
Indexing 2: Index (B,C)
Run Code Online (Sandbox Code Playgroud)
显然,索引 2 更好。
上下文的意思是:如果我索引所有列,最好为所有列设置一个索引,还是每个列都有一个单独的索引。在这种情况下,几乎总是更好地使用所有列。
这是一个设计建议,而不是用于评估。