優化資料庫
select * from table_name PROCEDURE ANALYSE();
根據結果,可以對資料庫中的資料型態提供優化建議
分為
垂直拆分: 把常用的欄位放置在同一個表格,把不常用的欄位放置在另外一個表格,當然兩者都需要帶有主鍵,才能夠進行連結。
但絕對不要把需變動的在同一個表格,把不常需變動的欄位放置在另外一個表格,因為每次存取都需要連結兩個表格,變成表格會變大!
水平拆分: 就把表格依據查詢特性,例如日期,區域,等等分隔成欄位名稱相同,但是資料內容不同的許多表格,這個觀念就是Partitioning,但是一個是手動操作,一個是資料庫引擎直接支援,但觀念是一樣的,目的都是在常數比例下,降低需尋訪的資料量。或者是降低以樹狀結構為基礎的index深度。
正規化的好處大家都懂,缺點大家也懂,就是SQL命令中使用太多的連結,造成查詢上的緩慢。
反正規化的好處與壞處,剛好跟正規化恰恰相反,熟練的資料庫管理師,應該很容易在之間做一個拿捏。
其應用想當然,以一般程式設計師的人腦,應當可以設計出多種反正規化的直覺作法,以一個陪榜主題而已,本篇留待明天討論....