SQL Server索引没有帮助

时间:2008-12-11 21:07:43

标签: sql-server indexing sql-server-2000

我有一个表(SQL 2000),有超过10,000,000条记录。记录的增加速度约为每周80,000-100,000。每周一次,从数据中生成一些报告。报告通常运行起来相当慢,因为索引很少(可能是为了加速INSERT)。一个新报告确实可以从特定“char(3)”列的附加索引中受益。

我使用企业管理器添加了索引(管理索引 - >新建 - >选择列,确定),甚至重建了表上的索引,但SELECT查询根本没有加速。有什么想法吗?

更新

表格定义:

ID, int, PK
Source, char(3)  <--- column I want indexed
...
About 20 different varchar fields
...
CreatedDate, datetime
Status, tinyint
ExternalID, uniqueidentifier

我的测试查询只是:

select top 10000 [field list] where Source = 'abc'

4 个答案:

答案 0 :(得分:5)

您需要查看查询计划并查看它是否正在使用该新索引 - 如果它不是有几件事情。一个 - 它可能有一个正在使用的缓存查询计划,自创建新索引以来,该计划尚未失效。如果不是这种情况,你也可以尝试索引提示[With(Index(yourindexname))]。

10,000,000行并非闻所未闻,它应该非常快速地读出来。

答案 1 :(得分:1)

使用SQL查询分析器中的“显示执行计划”查看是否使用了索引。

如果还没有聚集索引,你也可以尝试将其作为聚簇索引。

答案 2 :(得分:0)

对于那个大小的表,你最好的选择可能是分区你的表和索引。

答案 3 :(得分:0)

 select top 10000 

您的来源有多独特? SQL引擎通常会忽略具有非常少值的字段的索引。他们使查询变慢。如果您的SOURCE字段只有少量值,您可能希望删除该索引并查看它是否更快。