1列式索引与传统索引的区别
列式索引将每一列单独存储在一组磁盘页中,而不是像传统方式那样在每个页中存储多个行。
CREATE COLUMNSTORE INDEX indexName on [table_name]
( [col1] , ... )
3列式索引优点
(1) 只有查询所涉及到的列才会从磁盘中获取出来(在典型的事实数据表中,查询所涉
及到的列不会超过总列数的15%) 。
(2) 由于每个列中都会有大量重复数据,因此这种数据结构更便于进行压缩, 列式聚集索引其实就是数据的一份拷贝,不仅可以大幅提高性能,而且还可以大大节省存储空间。
(3) 数据经过高度压缩后,缓冲区的命中率将大大提高,并且访问频繁的列将缓存在内
存中,而访问不频繁的列则不会长时间占用内存。
4列式索引缺点
(1) 表之间的联接查询以及多列的联接查询很难通过列式索引大幅提高性能,甚至不会有任何性能提升。
(2) 添加列索引后表为只读
5列索引效率测试
(1) 创建表且初始化
7,169,010数据
(2) 执行查询语句A:
SELECT TRANSACTIONTYPE,COUNT,TRANSACTIONID,posid,cashierid,
ITEMtype,ITEMCODE,GLOBALCODE FROM BOHRSCSALES_DAY_STD
WHERE GLOBALCODE>='87006189'
所需时间为2.201
(3) 创建列索引
CREATE COLUMNSTORE INDEX BOHRSCSALES_DAY_STD_col1
on BOHRSCSALES_DAY_STD (TRANSACTIONTYPE,COUNT,TRANSACTIONID
,posid, cashierid,ITEMtype,ITEMCODE,GLOBALCODE)
(4) 执行查询语句A, 所需时间为1.155
(5) 创建普通索引
CREATE INDEX BOHRSCSALES_DAY_STD_col2
on
BOHRSCSALES_DAY_STD
(TRANSACTIONTYPE,COUNT,
TRANSACTIONID,posid,cashierid,ITEMtype,ITEMCODE,GLOBALCODE)
(6) 执行查询语句A, 所需时间为1.170
(7) 同样执行A查询语句结果为:
没索引执行时间 > 普通索引执行时间
> 列索引执行时间
分享到:
相关推荐
用于SqlServer的索引重建,全语句实现,可根据实际情况进行部分关键表的索引重建。
sql server创建索引sql server创建索引
此文档中详细的记载了,SQL Server 索引中include的魅力(具有包含性列的索引),希望可以帮到下载的朋友们!
sqlserver管理索引优化SQL语句
SQL Server 2000完结篇系列之七:SQL Server 2000索引优化详解
SQLserver查看索引列语句
SQL Server 全文索引查询
SQL Server 索引结构及其使用(聚集索引和非聚集索引)的区别与实例讲解,提高查询速度。
该ppt详细描述sqlserver索引优化时带来的查询性能提升和更新锁开销,最后介绍表设计,字段数据类型的选择及使用适当的冗余减少表连接
四、用SQL建立索引 五、用事务管理器建立索引 六、创建索引的方法和索引的特征 1.创建索引的方法 2.索引的特征 七、索引的类型 1.聚簇索引的体系结构 2.非聚簇索引的体系结构 八、系统如何访问表中的数据
深入理解SqlServer索引机制及合理优化数据库
sql server 重新组织和重新生成索引
SQL SERVER 索引的应用,内容包括:创建、使用 源代码 解压后是sql文件
在当的地方增加适当的索引并从不合理的地方删除次优的索引,将有助于优化那些性能较差的SQL Server应用。实践表明,合理的索引设计是建立在对各种查询的分析和...本文就SQL Server索引的性能问题进行了一些分析和实践。
sqlserver 2008 索引与视图 详解
SQLserver索引失效举例.txt
SQLServer索引设计经验谈SQLServer索引设计经验谈
系统跑久了,对于所有的索引想做一个具体的确认,所以写了这么一段, 可以用来分析自己数据的表及索引详情 针对记录数比较大的表,尤其要注意索引的情况,非常影响性能
SqlServer索引工作原理