我正在構建一個多語言站點決定我是否應該拆分表
我有一個說明表,其中包含每個產品的描述以及指示語言的列。所以它包含一行每種語言描述
現在我擔心的是,我有系統中的各種不同類型的產品,閱讀任何產品的描述將不得不通過此表。這意味着很多流量到這個表
是否有創建多個描述表,將專用於特定的產品組,並分發到單個表到多個表的點擊量的增益?
這會使我在Microsoft SQL上獲得任何性能提升嗎?
我正在構建一個多語言站點決定我是否應該拆分表
我有一個說明表,其中包含每個產品的描述以及指示語言的列。所以它包含一行每種語言描述
現在我擔心的是,我有系統中的各種不同類型的產品,閱讀任何產品的描述將不得不通過此表。這意味着很多流量到這個表
是否有創建多個描述表,將專用於特定的產品組,並分發到單個表到多個表的點擊量的增益?
這會使我在Microsoft SQL上獲得任何性能提升嗎?
出於實用目的,沒有。如果你的表格被正確編入索引,那麼你不應該看到任何區別。
不要過早地優化數據庫結構。
你在說多少產品?因爲如果它少於一千萬,甚至不用這樣優化它。
你在說什麼基本上是一個分區方案。這用於非常大的數據集。儘管除非每件物品都很大,否則不到一千萬就不會接近。
如果你正在做的是多讀,寫一些沒有從這種劃分有增益。
在出現問題之前不要優化問題。
我建議檢查這兩個東西:
如果您沒有明確看到性能問題,我不會打擾更改您的結構。對於幾乎任何規模的數據庫來說,這應該是完全正常的 - 可能有大量的項目,分區描述表可能會有所幫助,但是如果它被正確地編入索引,我認爲它根本不重要。
當您對錶格進行規格化時,總會有輕微的性能下降。但是如果你正確地爲你的表建立索引,你可能不會注意到它。如果及時確實成爲問題,那麼對規範化表格比規範化更容易。
所以,我會建議你使用單獨的表格。
同意 - 我更喜歡解決實際問題的問題。
如果你的應用是充分模塊化的,和你的數據訪問層結構正確,它不應該是以後所有的東西拆分問題。如果您使用存儲過程,視圖等從應用程序中抽象出基礎表結構,那麼稍後執行此類優化應該對您的源代碼的影響最小。
其次。有時候問自己這個問題是很好的,但在某種「笑測試」水平上。保持代碼充分記錄,模塊化等,以便您可以解決性能問題,如果您非常成功,並且遇到問題。 – 2009-08-24 16:29:32