Column store index 列数据如何匹配成行数据?
SQL?Server?2012引入了列存儲索引,對每列的數(shù)據(jù)進(jìn)行分組和存儲,然后聯(lián)接所有列以完成整個索引。這不同于傳統(tǒng)索引,傳統(tǒng)索引對每行的數(shù)據(jù)進(jìn)行分組和存儲,然后聯(lián)接所有行以完成整個索引。
在訪問基于行存儲的索引時,如果要查詢一個字段需要將整個Page讀入內(nèi)存,所以默認(rèn)會讀到所有行的數(shù)據(jù):
通過上面的圖片可以看出,如果一個查詢只想查詢字段A的值,代價是讀取所有的頁面,包括了不需要的字段B,C,D,E。?
?
與行存儲模式相比,使用列存儲只需要讀取單獨(dú)的列數(shù)據(jù),這樣可以減小IO的消耗,同時提供緩存的使用。
但是列存儲索引是如何在磁盤存儲的?如果我們只是將列的數(shù)據(jù)存儲在一起,如何在查詢的時候重新創(chuàng)建成行數(shù)據(jù)。
?
舉個例子:如果字段“名稱”存儲了“Kevin”和“Allen”兩個值,“生日”欄位存儲了“19650112”和“”19680415“。那么我們在查詢的時候如何能夠?qū)evin和生日匹配起來。
?
答案是數(shù)據(jù)的位置標(biāo)明它屬于哪一行。因此在“名稱”字段中行1存儲了“Kevin?“,在“生日”欄位中第一行對應(yīng)的存儲了“19650112“。依次類推,這樣查詢的時候就可以將所有的欄位匹配為對應(yīng)的行。
?
?
轉(zhuǎn)載于:https://blog.51cto.com/lzf328/1252919
總結(jié)
以上是生活随笔為你收集整理的Column store index 列数据如何匹配成行数据?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 自定义按钮实现 home
- 下一篇: UNIX网络编程——TCP/IP简介