假设有一个非主键列(A,B,C,D)的表,其中有一个索引(A,B,C,D)
涉及 (A,B,C,D) 子集的查询是否会使用索引?所描述的部分键查找存在什么样的特质?
我对它在 SQL Server、Sqlite、Firebird 中的工作方式特别感兴趣。
最佳答案
使用索引初始子集的查询应该使用索引。
因此,(A)、(A) 和 (B) 以及 (A) 和 (B) 和 (C) 上的等值连接应该使用索引。
实际上,您也可以添加不等式,因此,索引应支持以下所有条件:
- x.A = y.A
- x.A = y.A and x.B > y.B
- x.A = y.A 和 x.B = y.B
- x.A = y.A and x.B = y.B and x.C > y.C
- x.A = y.A and x.B = y.B and x.C = y.C
- x.A = y.A and x.B = y.B and x.C = y.C and x.D > y.D
- x.A = y.A and x.B = y.B and x.C = y.C and x.D = y.D
关于sql - 部分键查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15606310/