2013-08-31 24 views
0

我有一個sql數據庫傳遞給我,作爲一個訪問應用程序開始。從那以後它發展了很多。之前的開發人員在表格上存儲了額外的列,而不是分割表格,我們開始報告這些數據(超過100萬行),並且性能開始拖累某些查詢。sql性能更多列或更多的表用於報告

一個表是公司與包含名稱,參考文獻,詳細地址,財務細節,保險等

我想,我們應該了拆表,並有tblcompanytbladdresstblfinance等。由於我們的報告允許用戶報告他們想要的任何字段。我認爲如果用戶想要報告地址詳細信息,金融,保險等方面的內部連接tbladdress會更好。另外一些公司可能沒有任何財務細節,因此有很多空字段有什麼意義?

此外,它不只是這張表,其他表加入到這張表中,其他表格也是這樣。只是以這個表格爲例

所以我的問題是它會提高性能嗎?我認爲設計明智是要做的事情,但想要每個人的提示,技巧和意見。

+0

歡迎堆棧溢出。請注意,提出「提示,技巧和意見」的問題可能會被封閉:本網站針對的是可能具有明確答案的特定編程問題。有關更多詳細信息,請參閱http://stackoverflow.com/questions/how-to-ask。 –

回答

0

不知道你想提高性能。當然,正常化可能會改善它的收集和維護數據。但反規範化傾向於改善報告。所以訣竅是有兩個數據庫,每個需求一個,並通過挖掘操作數據庫來填充報告。如果你不想花費設置報告數據庫的成本,所有這些都取決於數據庫的負載和你想要獲得的命中。

您只能說,報表會降低運營交易速度,反之亦然。

如果你願意,你可以得到這兩個需求的最佳性能,那麼兩個數據庫是要走的路,或者你妥協......

+0

我想提高報告的性能。我們現在正在做的許多查詢似乎需要一段時間才能執行。保存數據的性能不如報告數據重要。我們實際上擁有200多個這種數據庫設置的副本(每個客戶1個副本),所以不確定是否有一個單獨的報告數據庫是一個選項 – Gillardo

+0

在這點上沒有任何猜測,這是我可以從這裏完成的。找到最受歡迎的最慢報告查詢。運行它在一個完全填充的測試數據庫幾次,以獲得一個性能數字。如果速度緩慢而沒有其他負載,請做一個解釋並着眼於優化它。如果速度很快,那麼你有一個爭用問題,你需要看看使用什麼鎖,你可以安全地使用它們。沖洗並重復。沒有人可以給你一個具體的答案。 –

+0

@ user2736022,請在Kimball的[數據倉庫工具包:權威建模權威指南]中閱讀(http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/books/data-warehouse-dw -工具包/)。前幾章可能會給你一個很好的想法,即使你不能/不會實現維度數據模型。正如Tony所暗示的那樣,逐一查詢優化可能效果不夠。 – bartover