【发布时间】:2012-09-24 14:37:19
【问题描述】:
我有一个表,其复合聚集索引 (int, DateTime) 有 99% 是碎片化的。
碎片整理并确保更新了统计信息后,我在运行此查询时仍然得到相同的响应时间:
SELECT *
FROM myTable
WHERE myIntField = 1000
AND myDateTimeField >= '2012-01-01'
and myDateTimeField <= '2012-12-31 23:59:59.999'
嗯,我看到响应时间略有改善(例如 5-10%),但我真的希望在索引重建和统计信息更新后突然查询。
预计的执行计划是:
SELECT Cost: 0%Clustered Index Seek (Clustered)[MyTable].[IX_MyCompoundIndex] Cost: 100%
这是因为索引是聚集索引吗?我错过了什么吗?
【问题讨论】:
-
表中有多少行,有多少行匹配这个查询?桌子有多宽?多久时间?你在哪里测量这个(Management Studio,你的应用)以及你在离数据源多远的地方检索结果?
-
你看过统计数据了吗?该集合可能完全在记忆中,有助于解释您在此处看到的内容。
-
到底是什么问题?返回多少行?查询需要多长时间?
标签: sql-server-2008 indexing clustered-index