我们正在尝试调整我们的 SQL Server 2005 数据库,因为我们的表上确实没有索引,而且我们的 CPU 使用率开始达到最大值 100%。
我们已经运行了 SQL Server 事件探查器 3 个小时,这涵盖了我们的 Web 前端使用率最高的时间。
在我们将其输入数据库引擎优化顾问后,它针对索引和统计信息提出了许多建议。以下是其中一个例子:
CREATE NONCLUSTERED INDEX [_dta_index_ChangeLog_9_245575913__K5_K2_K3_K4] ON [dbo].[ChangeLog]
(
[ChangePrimaryKey] ASC,
[TableID] ASC,
[ChangeDate] ASC,
[ChangeType] ASC
)WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
GO
..但失败了,因为已经有“名为‘_dta_index_ChangeLog_9_245575913__K5_K2_K3_K4’的索引或统计信息”,我可以在 SQL Server Management Studio 中该表的“统计信息”部分下看到它。我在“索引”下唯一拥有的是主键上的聚集索引。
为什么将其添加为统计数据而不是指数?
答案1
统计信息是一种非聚集索引,由 SQL Server 根据数据库使用情况自动创建,它们共享相同的命名空间(您可以在中看到一些索引元数据sys.indexes
)。
只需尝试使用更有意义的名称创建索引IDX_ChangeLog
,它就应该可以正常工作。