【问题标题】:How SQL Server indexing can help using BETWEEN for given querySQL Server 索引如何帮助将 BETWEEN 用于给定查询
【发布时间】:2017-09-07 07:34:06
【问题描述】:

索引对 SQL Server 中的BETWEEN 子句有帮助吗? 如果我有 20000 行的表并且查询是:

select *
from employee
where empid between 10001 and 20000

【问题讨论】:

  • 检查执行计划。 (而且,答案可能是肯定的。)
  • where 子句索引中的任何内容都会有所帮助。

标签: sql sql-server indexing between


【解决方案1】:

是的。这是sargable

它可以对具有前导列empid 的索引进行范围查找。导航 B-tree 以找到第一行 >= 10001,然后按键顺序读取所有行,直到到达范围的末尾。

除非索引为covering,否则您可能无法获得此计划。您的查询包含 select *,因此仅包含 empid 的索引可能需要进行 10,000 次查找才能获取缺失的列。

如果empidemployee 的主键,那么默认情况下它将是聚集索引键(除非您另外指定),因此这将自动覆盖,您应该会看到聚集索引搜索。

【讨论】:

    猜你喜欢
    • 2016-08-10
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-04
    • 2014-09-07
    相关资源
    最近更新 更多