大家好,
想請教一個大Table的規劃方式.
客戶的銷售資料庫的Table越長越大,常常需要用IDN去分析客戶的消費行為.隨的時間推移,
系統執行批次的時間越跑越慢.
我想到兩種方式,只是不知道成效如何?
方案1.用IDN的第一碼去建RANGE PARTITION:這樣切就是26個PARTITION(A.B.C...Z PARTITION)
方案2.把這個大TABLE用IDN第一碼切成幾個TABLE(EX:TABLE1是IDN開頭為A,B,C的資料 TABLE2是IDN開頭為D,E,F的資料...)
想說大部分都是用IDN當條件來做銷售分析跟查詢,以上兩種方式,有沒有人試過?
寫程式時我知道方案2比較麻煩,INSERT/SELECT資料時都要先判斷是哪個IDN開頭,來決定讀哪個TABLE,如果統計報表不分IDN的話,要UNION一堆TABLE,這樣效能會比原來一個大TABLE慢?
方案1在做INSERT/SELECT,雖不用作判斷,如果跑的統計報表,不分IDN跨PARTITION抓資料,是不是也會比原來一個大TABLE來的慢?
不知道上述兩種方案,有沒有人可以分享這方面的經驗供參考.
~多謝
建議用銷售日期切 YYYYMM PARTITION table, 再配合IDN等常用where條件欄位做loacl parttion index, 會更有效率的.