sql - 部分键查找

标签 sql sql-server sqlite indexing firebird

假设有一个非主键列(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/

相关文章:

sql - Max() GROUP BY (Aggregate) 具有相同列值的函数问题

MySQL:跨两行选择不同的组合,而不是重复计算

sql - 在应用程序的数据库存储过程中使用 MSDB 存储过程

基于 C# 服务的数据库不写入数据库

ios - 如何在 Macbook 中的 iPhone 6s 模拟器上找到 SQLite 数据库?

python-3.x - sqlite3 python3,数据库的用户输入

SQLite3做一个SELECT,按多个跨表列排序

SQL Server 日志文件困惑

mysql - 导入SQL查询服务器端错误

sql-server - SQL Server 选择每组大小小于 X 的前 N ​​行