0

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

我已经使用企业管理器添加了索引(管理索引 -> 新建 -> 选择列,OK),甚至重建了表上的索引,但是 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

4 回答 4

5

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

10,000,000 行并非闻所未闻,它应该很快就能读出来。

于 2008-12-11T21:55:42.230 回答
1

使用 SQL 查询分析器中的 Show Execution Plan 查看是否使用了索引。

如果还没有,您也可以尝试将其设为聚集索引。

于 2008-12-11T21:44:15.407 回答
0

对于这种大小的表,您最好的选择可能是对表和索引进行分区。

于 2008-12-11T21:10:38.063 回答
0
 select top 10000 

你的资源有多独特?SQL 引擎通常会忽略具有很少值的字段的索引。它们使查询变慢。如果您的 SOURCE 字段只有少数值,您可能想要删除该索引并查看它是否更快。

于 2008-12-11T23:19:38.567 回答