Schema
為什麼沒有辦法將列標記為“關鍵字”
在典型的星型模式中,您最終會得到一堆列,這些列是某個查找表的 ID,其中查找表幾乎就是這樣:
create table hostnames ( id primary key, name varchar(200) )
當你從主表中選擇時,你最終會得到一堆左連接,當你插入時,你總是必須先查找 ID,如果不存在則插入。這是一種痛苦。我的數據庫相關程式碼的 50% 僅用於處理此問題。
如果有一種方法可以向數據庫指示給定列的不同值數量較少,這樣它就可以建構自己的內部查找表並節省空間。以上將變為:
create table sometablewithahostname ( ... hostname varchar(200) keyword, ... )
並且沒有必要管理其他表。有沒有這樣的RDBMS系統?
如果您的目標是在減少儲存空間需求的同時進行反規範化, Oracle 11gR2 中的混合列壓縮可以幫助您解決這個問題。它僅在具有幾種特定儲存類型的企業版上可用。
將具有相同數據類型和相似特徵的列數據儲存在一起,可以顯著提高壓縮所節省的儲存空間。數據庫壓縮由任何 SQL 操作操作的數據,儘管直接路徑負載的壓縮級別更高。數據庫操作對壓縮對象透明地工作,因此不需要更改應用程序。