索引二进制列是否会提高SQL WHERE BETWEEN语句的性能?

the*_*ker 3 sql

我有一个表有一个表示IP地址数据的二进制列.其中一个查询对该二进制列执行BETWEEN比较.

如果我索引该列,那么SQL语句中BETWEEN比较的性能会提高吗?

gbn*_*gbn 5

在这个例子中......

SELECT * FROM MyTable WHERE BinaryCol BETWEEN x and y
Run Code Online (Sandbox Code Playgroud)
  • SELECT *可能意味着忽略了索引,特别是如果x/y覆盖了表的很大一部分
  • 如果x/y非常有选择性,那么它将导致对聚簇索引进行书签/ RID查找(尤其是SQL Server).
  • 这适用于单独使用BinaryCol的索引,或者如果它已被覆盖

这是这个例子......

SELECT BinaryCol, AnotherCol, YetAnotherCol FROM MyTable WHERE BinaryCol BETWEEN x and y
Run Code Online (Sandbox Code Playgroud)
  • 涵盖包含AnotherCol和YetAnotherCol的BinaryCol索引,很可能会使用索引
  • 如果x/y覆盖了表的很大一部分,那么可能不是

不幸的是,"这取决于"