SQL Server索引如何帮助将BETWEEN用于给定查询

0 sql sql-server indexing between

索引是否有助于BETWEENSQL Server 中的子句?如果我有20000行的表,查询是:

select *
from employee
where empid between 10001 and 20000
Run Code Online (Sandbox Code Playgroud)

Mar*_*ith 7

是.这是可以接受的.

它可以在带有前导列的索引上进行范围搜索empid.导航B树以找到第一行>= 10001,然后按键顺序读取所有行,直到达到范围的结尾.

除非索引覆盖,否则您可能无法获得此计划.您的查询具有select *仅包含的索引empid可能需要执行10,000次查找以获取缺少的列.

如果empidemployee默认情况下的主键,则它将是聚簇索引键(除非您另行指定),因此这将自动覆盖,您应该期望看到聚簇索引查找.