Index
拆分錶以獲得更多分群選項 - 會有所幫助嗎?
理論完備。
假設我們有一個包含幾百萬行的表。該表在 PK 上有聚集索引,對於快速獲取特定行很重要。但是,該表也有一種列類型
CreatedDateTime
(非聚集索引),並且由於報告是在特定時間跨度內建構的,顯然,對它進行集群也是很好的。如果我將表分成兩部分 -
TMain
使用聚群 PK,TMainTime
使用(MainId)
非聚群 PK,以及(CreatedDateTime)
用於聚群索引,它會有所幫助嗎?看起來我可以使用 確定所需的時間跨度TMainTime
,搜尋其聚集的日期時間,然後在找到值的情況下,獲取它們在表中MainId
搜尋聚集的 PK 。TMain
它會為性能增加一些東西嗎?JOIN
或者它會通過對兩個表的操作消除任何可能的收益嗎?
由於這是一個理論問題,我敢肯定會有一些極端情況,這是一個好主意,但作為一般規則,我不會走這條路。
正如您所說,您將通過連接兩個表來使正常查詢複雜化,並且您還將使插入/更新復雜化。
一個設計良好、規範化的數據庫,在大小合適的伺服器上具有適當的索引,應該足以處理幾百萬行(而且遠不止這些)。
作為參考,堆棧交換網路執行在主流 RDBMS 上,沒有使用特殊的設計技巧。您可以通過下載數據庫自行驗證。