此問題是關於插入完成時重新聚集索引中的數據會發生什麼情況。我認爲在具有聚集索引的表上執行插入比在聚集索引中重新組織數據涉及更改磁盤上數據的物理佈局不是一種更昂貴的方式。除了通過我在工作中遇到的一個例子,我不知道如何解釋我的問題。聚集索引 - 多部分索引和單部分索引以及插入/刪除的效果
假設有一個表(垃圾),並且有兩個查詢在表上完成,第一個查詢通過Name進行搜索,第二個查詢通過Name和Something進行搜索。由於我工作的數據庫上我發現表已經有兩個索引創建一個支持每個查詢,像這樣:
--drop table Junk1
CREATE TABLE Junk1
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name ON Junk1
(
Name
)
CREATE NONCLUSTERED INDEX IX_Name_Something ON Junk1
(
Name, Something
)
現在,當我看着這兩個指標,似乎IX_Name是多餘的,因爲IX_Name_Something可以被任何希望按名稱搜索的查詢使用。因此,我將消除IX_Name,使IX_Name_Something聚集索引來代替:
--drop table Junk2
CREATE TABLE Junk2
(
Name char(5),
Something char(5),
WhoCares int
)
CREATE CLUSTERED INDEX IX_Name_Something ON Junk2
(
Name, Something
)
有人建議,第一編索引方案應保持,因爲這將導致更有效的插入/刪除(假設沒有必要擔心名稱和東西的更新)。這有道理嗎?我認爲第二種索引方法會更好,因爲這意味着需要維護一個較少的索引。
我將不勝感激這個具體的例子或指導我更多關於維護聚集索引的信息。
不錯,徹底的解釋。 – 2010-05-27 21:43:59