橫表就是普通的建表方式,如乙個表結構為:
主鍵、欄位1、欄位2、欄位3。。。
如果變成縱表後,則表結構為:
主鍵、字段**、字段值。
而字段**則為字段1、欄位2、欄位3。
具體為電信行業的例子。以使用者帳單表為例一般出賬時使用者有很多費用客戶,其資料一般儲存為:時間,客戶id,費用科目,費用。這種儲存結構一般稱為縱表,其特點是行數多,欄位少。 縱表在使用時由於行數多,統計使用者數或對使用者進行分檔時還需要進行group by 操作,效能低,且操作不便,為提高效能,通常根據需要將縱表進行彙總,形成橫表,比如:時間、客戶id,基本通話費、漫遊通話費,國內長途費、國際長途費....。通常形成乙個客戶一行的表,這種表統計使用者數或做分檔統計時比較方便。另外,資料探勘時用到的寬表一般也要求是橫表結構。
縱表對從資料庫到記憶體的對映效率是有影響的,但細一點說也要一分為二:
縱表的初始對映要慢一些;
縱表的變更的對映可能要快一些,如果只是改變了單個欄位時,畢竟橫表字段比縱表要多很多。
我想這個還是在討論如何優化資料庫資料結構的問題。
另:我親身遭受過帳務系統表的橫表和縱表的問題的折磨,橫表使結構一目了然,但幾乎不能擴充套件,當使用者部署新業務時捉襟見肘,縱表似乎有無限的擴充套件性,但代價是有些凌亂,不便於理解,更要命的是資料管理上不夠安全,我就知道某地方的帳務系統帳務配置表(縱表)被某位專家級操作者無意刪除了一條,就是一條啊!結果......,而橫表,你要改他的結構不是那麼容易的,不過兩者對帳務程式效能的影響幾乎沒有任何區別。
橫表與縱表區別
橫表就是普通的建表方式,如乙個表結構為 主鍵 欄位1 欄位2 欄位3。如果變成縱表後,則表結構為 主鍵 字段 字段值。而字段 則為字段1 欄位2 欄位3。具體為電信行業的例子。以使用者帳單表為例一般出賬時使用者有很多費用客戶,其資料一般儲存為 時間,客戶id,費用科目,費用。這種儲存結構一般稱為縱表...
橫表縱表轉換
橫表就是普通的建表方式,如表結構為 主鍵 欄位1 欄位2 欄位3.如果變成縱表後,則表結構為 主鍵 字段 字段值。而字段 則為字段1 欄位2 欄位3.具體為電信行業的例子。以使用者帳單表為例,一般出賬時使用者有很多費用,其資料一般儲存為 時間,客戶id,費用科目,費用。這種儲存結構一般稱為縱表,其特...
縱表與橫表互轉例項
1.縱表轉橫表 縱表結構 table1 轉換後的橫表結構 sql示例 select username,sum case course when 語文 then grade else 0 end as 語文,sum case course when 數學 then grade else 0 end a...