SQL Server索引如何帮助在给定查询中使用BETWEEN

SQL Server索引如何帮助在给定查询中使用BETWEEN

问题描述:

索引是否有助于SQL Server中的BETWEEN子句? 如果我有20000行的表,并且查询是:SQL Server索引如何帮助在给定查询中使用BETWEEN

select * 
from employee 
where empid between 10001 and 20000 
+0

检查执行计划。 (而且,答案可能是肯定的。) – jarlh

+0

Where子句索引中的任何内容都会有所帮助。 – Rakib

是的。这是sargable

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

你可能不会得到这个计划,除非索引是covering。您的查询有select *,因此只包含empid的索引可能需要执行10,000次查找才能找到缺失的列。

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