【发布时间】:2012-01-14 11:06:20
【问题描述】:
我发现如果我用小于或大于运算符查询表,sql server 索引不能正常工作。
假设我有一个只有 2 列的简单表 (TestTable),如下所示:
Column Name, column type, primary Key, index
iID, int, yes, cluster index
iCount, int, no, non-cluster index
name, nvarchar(255), no, no index
现在,我通过以下方式查询表:
SELECT * FROM TestTable WHERE iCount = 10。
很好,Sql server 将使用 iCount 列的非簇索引来检索结果。
但是,如果我这样查询表:
SELECT * FROM TestTable WHERE iCount
Sql server 将对 iID 的集群索引进行索引扫描以检索结果。
我想知道为什么当我在查询中使用小于或大于运算符时,sql server 无法使用正确的索引。
【问题讨论】:
-
考虑将聚集索引更改为复合
(iCount, iID)按此顺序。
标签: sql sql-server-2008