Azure-Sql-Database

除自動增量 ID 之外的欄位上的分群如何影響插入?

  • October 16, 2017

我有一個表,其中有一個自動遞增的 id 列,以及各種其他資訊列。行非常頻繁地插入到該表中。讀回數據時,大多數查詢按外鍵和日期範圍進行過濾。

目前,在 id 列上有一個聚集索引,在兩個重要列(TrackerId 和 DateRecorded)上有一個非聚集索引。如果我要交換索引,我們的查詢會執行得更快。這會對插入時間產生負面影響嗎?

在您的實際設計中,您有唯一的、靜態的、狹窄的、不斷增加的聚集索引鍵,當插入行時不會導致頁面拆分。

如果您在TrackerIdand上創建聚集索引DateRecorded(您想按此順序使用這些列,對嗎?因為您的搜尋謂詞具有相等 onTrackerId和範圍 on DateRecorded)您將獲得非增加的聚集鍵,這將導致頁面拆分 onINSERT

它會更廣泛,也許不是獨一無二的。

但最終決定權在你。我們不知道這張表是否有更多的讀取或寫入,並且可以通過選擇適當Fill Factor且定期的索引重建來減輕頁面拆分。

在這裡您可以閱讀更多資訊:Paul Randal 的減輕索引碎片

引用自:https://dba.stackexchange.com/questions/188531