我有一個學區數據庫(約15,000人和增長)以及退休計劃/福利可用於每個員工。該數據是相當不錯標準化:反規範化的建議
- A區記錄與
- A區記錄與相關0或ñ退休計劃選項(其中ñ < 10鋪開3連接表)關聯0或n好處(其中n從1個連接的表格更接近於40)
- 區域還與其他關聯數量相似的其他事物相關聯。
現在客戶想報告。而且他們希望以非常動態的方式進行報告(想想一下iTunes智能播放列表,您可以在任何地區,計劃或優惠的任何地方添加/刪除規則)。我需要讓他們查詢某個地區的任何財產,其退休計劃或其利益,並返回的一切。爲了讓事情變得簡單(現在)並避免重複的數據,我設置了幾個視圖(噓,我知道),它允許我以任何1區記錄的方式訪問數據與all_retirement_plans
視圖和all_benefits_plans
視圖具有一對一的關係,並與all_benefits_plans
視圖具有一對一的關係。這給了我一套乾淨的連接,導致了一個統一的結果集,但顯然帶有它自己的問題,我打算早點擊,而不是晚點...
也就是說,它會得到可笑地隨着更多數據的添加而變慢。
我在尋找有關反規範化的建議。我曾想過一個報告表,它可以完成視圖的工作,但可以編入索引。我也想過把這整個區域數據轉儲到MongoDB(或類似的)。我相信還有其他的選擇,但我會玩試驗和錯誤遊戲,所以我希望這裏的某個人能夠以一種合理的解決方案讓我參與進來。
底線是我需要能夠存儲〜15,000(和增長)的區域記錄以及大量額外的元數據,然後以非常細化的級別報告這些數據。除了我自己的想法帶給我的任何地方之外,任何人有任何想法或建議嗎我試圖提前知道我所知道的問題。
*」我已經設置了幾個視圖(噓,我知道)......「*視圖是SQL數據庫管理系統的基本特徵。當你必須緊挨着使用* views *和* shhh *時,你應該考慮切換到不同的dbms。 – 2013-02-20 19:29:49
我在那裏有點愚蠢,但事實是,對於這種特殊需求,意見可能不是合適的平臺。考慮到數據的大小(特別是一旦非規範化的列數),這些觀點就像我預期的那樣緩慢。我不知道有什麼方法來優化它們,但我很想錯。 – 2013-02-20 19:41:44
獲得更好性能的一種方法是切換到具有更好查詢優化器的dbms。 – 2013-02-20 20:01:48