【发布时间】:2009-06-08 10:16:33
【问题描述】:
我正在使用 SQL Server 2008,并且在我的一个表中,我在其标识符上实现了一个(集群)主键。以下是表格说明:
标识符: - IdentifierId int NOT NULL PK - 别名 nvarchar(200) - 数据类型 int NOT NULL
我创建了两个索引:一个用于 Alias,另一个用于 DataType。 然而,我刚刚注意到一些奇怪的事情。 运行以下查询时:
SELECT * FROM IDENTIFIER WHERE DataType = 1
使用索引和主键的查询实际上比没有它们时运行得更慢;大约需要10秒的时间!索引没有碎片 - 我检查过 - 我也在使用这个
GO
CHECKPOINT;
GO
DBCC DROPCLEANBUFFERS;
GO
DBCC FREEPROCCACHE;
GO
在查询本身之前。
这张表相当大,上面有几百万个条目。索引和 PK 在大多数查询中都起着至关重要的作用,但在这种情况下,我无法理解为什么查询运行 slower 与它们一起。有什么想法吗?
提前致谢
编辑:执行计划显示只使用聚集索引,并且 DataType 变量当前上升到 150。
【问题讨论】:
-
你看过生成的执行计划了吗?
-
数据类型列的选择性如何? (即该列可以有多少个值)?
-
刚刚回答:只有聚集索引和数据类型只从 1 到 150
标签: sql-server performance indexing