SQL Server 2012引入了列存储索引,对每列的数据进行分组和存储,然后联接所有列以完成整个索引。这不同于传统索引,传统索引对每行的数据进行分组和存储,然后联接所有行以完成整个索引。

在访问基于行存储的索引时,如果要查询一个字段需要将整个Page读入内存,所以默认会读到所有行的数据:

通过上面的图片可以看出,如果一个查询只想查询字段A的值,代价是读取所有的页面,包括了不需要的字段B,C,D,E。

与行存储模式相比,使用列存储只需要读取单独的列数据,这样可以减小IO的消耗,同时提供缓存的使用。

但是列存储索引是如何在磁盘存储的?如果我们只是将列的数据存储在一起,如何在查询的时候重新创建成行数据。

举个例子:如果字段“名称”存储了“Kevin”和“Allen”两个值,“生日”栏位存储了“19650112”和“”19680415“。那么我们在查询的时候如何能够将Kevin和生日匹配起来。

答案是数据的位置标明它属于哪一行。因此在“名称”字段中行1存储了“Kevin “,在“生日”栏位中第一行对应的存储了“19650112“。依次类推,这样查询的时候就可以将所有的栏位匹配为对应的行。

转载于:https://blog.51cto.com/lzf328/1252919

Column store index 列数据如何匹配成行数据?相关推荐

  1. vlookup匹配值不唯一_数据对比、数据查询匹配Vlookup函数3种常见错误及解决方案...

    Excel中的Vlookup函数,在大家日常数据处理计算中应用的机会非常多,因为它可以帮助我们完成数据查询匹配.数据对比.但是这个函数在使用的过程中也经常会遇到查询错误的问题.根据实践经验总结,发现主 ...

  2. pandas使用str函数和contains函数查看dataframe特定数据列中是否匹配或包含特定模式的字符串(match or contain a pattern in column value)

    pandas使用str函数和contains函数查看dataframe特定数据列中是否匹配或包含特定模式的字符串(match or contain a pattern in column value) ...

  3. R语言dplyr包通过数据列的索引重命名数据列实战(Rename Column by Index Position)

    R语言dplyr包通过数据列的索引重命名数据列实战(Rename Column by Index Position) 目录 R语言dplyr包通过数据列的索引重命名数据列实战(Rename Colum ...

  4. R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用[]操作符和列索引数值访问dataframe指定数据列的数据(column index)

    R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用[]操作符和列索引数值访问dataframe指定数据列的数据(column index) 目录 R语言使用多个数据类型不同的 ...

  5. oracle 12c (内存列存储)IM column store

    oracle 12c (内存列存储)IM column store 1.关于内存列存储的说明 1)内存列存储是SGA里的一个静态的池.以列为单位的方存储元数据.不替代buffer pool,只是其的补 ...

  6. pandas为dataframe添加新的数据行(rows)、在dataframe后面纵向添加一行数据(数据为列表list形式)、列有不匹配将会使用NA值进行填补

    pandas为dataframe添加新的数据行(rows).在dataframe后面纵向添加一行数据(数据为列表list形式).列有不匹配将会使用NA值进行填补 目录

  7. R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用[]操作符和列名称访问dataframe指定数据列的数据(dataframe column data)

    R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用[]操作符和列名称访问dataframe指定数据列的数据(dataframe column data) 目录 R语言使用多个 ...

  8. R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象、使用列名称(column name)访问dataframe中的指定数据列的数据

    R语言使用多个数据类型不同的向量数据创建一个dataframe数据对象.使用列名称(column name)访问dataframe中的指定数据列的数据 目录 R语言使用多个数据类型不同的向量数据创建一 ...

  9. Excel 两个表格按照某一列数据进行匹配

    我们在操作excel表的时,有时需要将一个excel表中的数据匹配到另一个表中,那么就需要用到VLOOKUP函数,VLOOKUP函数是Excel中的一个纵向查找函数,VLOOKUP是按列查找,最终返回 ...

最新文章

  1. CentOS6.4下安装xampp
  2. switch case 支持的 6 种数据类型!
  3. go 变量在其中一个函数中赋值 另一个函数_go 学习笔记之仅仅需要一个示例就能讲清楚什么闭包...
  4. Android初学:联系创建Activity
  5. 圣思园java se培训总结(82-)(观察者设计模式)
  6. Nebula:Slack 的覆盖全球性的开源网络
  7. 别在Java代码里乱打日志了,这才是正确的打日志姿势!
  8. sharepoint2010 浏览器无法打开word
  9. 基本飞行模式中英文对照
  10. 笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!
  11. python输出杨辉三角啊二维数组_用Python输出一个杨辉三角的例子
  12. python海龟图画龙珠_DeepOps的Python小笔记-天池龙珠计划-Python训练营-Task 02:DAY5
  13. MATLAB的sum函数
  14. 论文《基于FPGA 的CFAR 设计与实现》复现
  15. Xcode使用githut做代码版本管理
  16. python人民币和美元转换-【菜鸟学Python】案例一:汇率换算
  17. 股票学习-量柱和k线-第二天
  18. 计算机软件 算什么资产,软件属于固定资产吗
  19. php中文数组按拼音排序问题
  20. 机器视觉光源选型攻略

热门文章

  1. python协程实时输出_python协程
  2. 好用的Span(富文本)api
  3. html制作主体部分,html – 使用CSS制作具有动态面板主体高度的面板填充父容器高度的其余部分...
  4. ubuntu mysql navicat_Ubuntu搭建MySQL,Navicat Premium连接
  5. php 7 pcntl扩展,PHP_Linux系统中为php添加pcntl扩展,pcntl扩展可以支持php的多线程 - phpStudy...
  6. golang 定义一个空切片_Golang简单入门教程——函数进阶使用
  7. 批量模糊查询_Django之ORM表高级操作、增删改查、F/Q查询等
  8. 安卓 spinner下拉框 做模糊查询_如何用一张图来做全年/去年的部门离职率动态对比...
  9. android点击事件的优先级,android中进程的优先级
  10. 如何活着:欲望、外界、标签、天才、时间、人生目标和经历