我目前正在研究一個廣泛使用的.NET CMS系統的性能問題,並且有一個特定的表,其中有大約5,000,000條記錄,這是造成這些問題的根本原因,只是查詢此表的內容最多需要2分鐘在我的本地開發環境。總是在數據庫表上定義聚簇索引是個好主意嗎?
查看該表的模式,我注意到只有一個唯一的非聚簇索引並且沒有聚簇索引。
表&指數定義如下
CREATE TABLE [dbo].[MyTable](
[Id] [uniqueidentifier] NOT NULL,
[ItemId] [uniqueidentifier] NOT NULL,
[Language] [nvarchar](50) NOT NULL,
[FieldId] [uniqueidentifier] NOT NULL,
[Value] [nvarchar](max) NOT NULL,
[Created] [datetime] NOT NULL,
[Updated] [datetime] NOT NULL
)
CREATE UNIQUE NONCLUSTERED INDEX [IX_Unique] ON [dbo].[MyTable]
(
[ItemId] ASC,
[Language] ASC,
[FieldId] ASC
)
有沒有人對這個表周圍指標的任何建議,以提高查詢性能,特別是它總體上是好的做法,總是在一個表上定義一個聚集索引?
謝謝
爲了表明其指標會有所幫助,我們需要知道你是如何訪問表。你對它執行的查詢是什麼? – hatchet
對於任何「正常」數據表 - 是的,我總是會推薦一個**好**聚簇索引(在一個狹窄的,穩定的,獨特的,最好不斷增加的列)。這可能不適用於臨時表格,用於例如批量插入等 - 但其他任何事情都從一個好的聚集索引中受益,是的 –