我有一个表(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'
答案 0 :(得分:5)
您需要查看查询计划并查看它是否正在使用该新索引 - 如果它不是有几件事情。一个 - 它可能有一个正在使用的缓存查询计划,自创建新索引以来,该计划尚未失效。如果不是这种情况,你也可以尝试索引提示[With(Index(yourindexname))]。
10,000,000行并非闻所未闻,它应该非常快速地读出来。
答案 1 :(得分:1)
使用SQL查询分析器中的“显示执行计划”查看是否使用了索引。
如果还没有聚集索引,你也可以尝试将其作为聚簇索引。
答案 2 :(得分:0)
对于那个大小的表,你最好的选择可能是分区你的表和索引。
答案 3 :(得分:0)
select top 10000
您的来源有多独特? SQL引擎通常会忽略具有非常少值的字段的索引。他们使查询变慢。如果您的SOURCE字段只有少量值,您可能希望删除该索引并查看它是否更快。