Index

拆分錶以獲得更多分群選項 - 會有所幫助嗎?

  • February 11, 2016

理論完備。

假設我們有一個包含幾百萬行的表。該表在 PK 上有聚集索引,對於快速獲取特定行很重要。但是,該表也有一種列類型CreatedDateTime(非聚集索引),並且由於報告是在特定時間跨度內建構的,顯然,對它進行集群也是很好的。

如果我將表分成兩部分 -TMain使用聚群 PK,TMainTime使用(MainId)非聚群 PK,以及(CreatedDateTime)用於聚群索引,它會有所幫助嗎?看起來我可以使用 確定所需的時間跨度TMainTime,搜尋其聚集的日期時間,然後在找到值的情況下,獲取它們在表中MainId搜尋聚集的 PK 。TMain它會為性能增加一些東西嗎?JOIN或者它會通過對兩個表的操作消除任何可能的收益嗎?

由於這是一個理論問題,我敢肯定會有一些極端情況,這是一個好主意,但作為一般規則,我不會走這條路。

正如您所說,您將通過連接兩個表來使正常查詢複雜化,並且您還將使插入/更新復雜化。

一個設計良好、規範化的數據庫,在大小合適的伺服器上具有適當的索引,應該足以處理幾百萬行(而且遠不止這些)。

作為參考,堆棧交換網路執行在主流 RDBMS 上,沒有使用特殊的設計技巧。您可以通過下載數據庫自行驗證。

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