Sql-Server
具有 80 個外鍵的表
我有一張有 120 列的表,其中大部分(大約 80 列)是外鍵。我們正在重構系統中的一些主表。我正在考慮將這個表更改為小表,因為我在網際網路上看到他們建議不要有超過 5 個索引的表。我們還沒有索引表上的所有 FK,但其中一些是最常用的。如果我將我的表分成其他小表,我認為它會被更好地索引。你認為這會提高桌子上的性能嗎?
你認為這會提高桌子上的性能嗎?
不,您最終可能只是將較小的表連接在一起。
我的建議是首先確定表的工作量和用途(讀取和寫入):
1.(Write > Read):
如果表上的寫活動多於讀活動,那麼最好有規範化的表,這意味著我們將表的目的最小化,即而不是將銷售、客戶和產品數據放在一個表中,更好地為每個目的維護單獨的表。這樣您可以提高寫入操作的性能,請注意擁有更多非聚集索引(沒有任何使用)會對性能產生負面影響
2.(Write < Read) :
如果表的目的主要是服務於讀操作(假設 10% 到 20% 寫,80% 到 90% 讀),那麼最好保持為非規範化表,這樣有助於我們避免加入每個閱讀活動。