我在SQL Server數據庫中有一個相當獨特的表,它不遵循'典型'使用習慣,並且正在尋找關於聚簇索引的一些建議。SQL Server「一次寫入」表聚簇索引
這是一個虛構的例子,但它非常接近真實的數據。
表中有一個3列主鍵,它們對其他表是真正的外鍵,第四個字段包含相關數據。對於這個例子,讓我們說,表是這樣的:
CREATE TABLE [dbo].[WordCountsForPage](
[AuthorID] [int] NOT NULL,
[BookID] [int] NOT NULL,
[PageNumber] [int] NOT NULL,
[WordCount] [int] NOT NULL
)
因此,我們有一個有點層次的主鍵,具有獨特的數據在於第四場。
在實際應用中,總共有28億條可能的記錄,但僅此而已。隨着時間的推移計算數據,實時創建記錄,實際上可能實際上只計算其中1/4記錄。它們存儲在數據庫中,因爲計算是一個昂貴的操作,我們只想爲每個獨特的組合執行一次。如今,數據每分鐘讀取數千次,但是(至少現在)每分鐘還有數百次插入,因爲表填充自己(並且這將持續相當長的一段時間)。我會說每個插入(今天)有10個讀取。
我想知道是否因爲聚簇索引而對所有這些插入進行性能檢測。
由於表將最終變爲只讀,所以聚集索引是有意義的「長期」,但需要一段時間才能達到此目的。
我想我可以在繁重的插入期間將索引設置爲非集羣,並在表填充時將其更改爲集羣,但是如何確定何時會交叉點(以及如何通知我自己在未來的'時機到了')?
我真正需要的是一個可轉換索引,它在未來的某個神奇時間從非聚簇到聚簇。
有關如何處理這個問題的任何建議?
謝謝馬克。是的,我在這裏問過之前實際上已經閱讀過這篇文章。問題在於指數並非「不斷增加」。數據進入表格沒有任何順序。 – Flipster 2010-12-04 13:29:37