2

假设有一个包含非主键列 (A,B,C,D) 的表,其中 (A,B,C,D) 上有一个索引

涉及 (A,B,C,D) 子集的查询会使用索引吗?如上所述,部分键查找存在哪些特质?

我对它在 SQL Server、Sqlite、Firebird 中的工作方式特别感兴趣。

4

2 回答 2

5

使用索引初始子集的查询应使用索引。

因此,(A)、(A) 和 (B) 以及 (A) 和 (B) 和 (C) 上的等值连接应该使用索引。

实际上,您也可以添加不等式,因此,索引应该支持以下所有内容:

  • xA = yA
  • xA = yA 和 xB > yB
  • xA = yA 和 xB = yB
  • xA = yA 且 xB = yB 且 xC > yC
  • xA = yA 和 xB = yB 和 xC = yC
  • xA = yA 且 xB = yB 且 xC = yC 且 xD > yD
  • xA = yA 且 xB = yB 且 xC = yC 且 xD = yD
于 2013-03-25T01:33:55.137 回答
3

是的,如果搜索键与索引字段的顺序相同。

否则没有。假设您被指示去图书馆,请查看“了不起的盖茨比”,第 3 章,第三页。这就像使用多字段索引一样。

现在说,你被告知要获得第 3 章,第三页....没有书名。你得看每一本书。

于 2013-03-25T01:52:09.287 回答