SQL Server 2016新特性:列存储索引新特性

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
简介: SQL Server 2016新特性:列存储索引新特性行存储表可以有一个可更新的列存储索引,之前非聚集的列存储索引是只读的。非聚集的列存储索引支持筛选条件。在内存优化表中可以有一个列存储索引,可以在创建表的时候创建,也可以在之后的alter table语句上创建。
SQL Server 2016新特性:列存储索引新特性
  1. 行存储表可以有一个可更新的列存储索引,之前非聚集的列存储索引是只读的。
  2. 非聚集的列存储索引支持筛选条件。
  3. 在内存优化表中可以有一个列存储索引,可以在创建表的时候创建,也可以在之后的alter table语句上创建。之前内存优化表不支持列存储索引。
  4. 聚集的列存储索引可以有多个非聚集行存储索引,之前列存储索引不支持非聚集索引。
  5. 支持在聚集列存储索引上加入主键和外键约束,约束使用btree索引。
  6. 列聚集索引有一个压缩延迟选项,让事务复合收到的影响最小。
 
兼容级别为120,130的数据库性能:
  1. 列存储索引支持读提交快照隔离级别和快照隔离级别。这样可以让查询保持事务一致性,并且不加锁
  2. 列存储索引不需要通过重建索引来清理删除的行,可以通过alter table……reorganize语句来清理
  3. 列存储索引可以在alwayson readable secondary replica中访问。
  4. 为了提升性能,SQLServer在表扫描的时候会为小于8字节的列计算最大,最新,合计,计数,平均值聚合会被pushdown。
  5. 在比较字符串类型的时候,条件会被pushdown来提高查询速度。
 
兼容级别为130的数据库性能:
  1. 新的batch模式支持一下操作:
    • SORT
    • 多个聚合函数
    • Windows 聚合函数
    • Windows用户定义的聚合
    • windows聚合分析函数
  2. 单线程查询可以运行在batch mode
  3. 当访问的数据是行存储或者列存储,内存优化表查询可以在InterOp模式下并行
 
支持:
These system views are new for columnstore:
- sys.column_store_row_groups (Transact-SQL)
- sys.dm_column_store_object_pool (Transact-SQL)
- sys.dm_db_column_store_row_group_operational_stats (Transact-SQL)
- sys.dm_db_column_store_row_group_physical_stats (Transact-SQL)
- sys.dm_db_index_operational_stats (Transact-SQL)
- sys.dm_db_index_physical_stats (Transact-SQL)
- sys.internal_partitions (Transact-SQL)
 
These in-memory OLTP-based DMVs contain updates for columnstore:
- sys.dm_db_xtp_hash_index_stats (Transact-SQL)
- sys.dm_db_xtp_index_stats (Transact-SQL)
- sys.dm_db_xtp_memory_consumers (Transact-SQL)
- sys.dm_db_xtp_nonclustered_index_stats (Transact-SQL)
- sys.dm_db_xtp_object_stats (Transact-SQL)
- sys.dm_db_xtp_table_memory_stats (Transact-SQL)
 
限制:
  1. 当btree索引定义在聚集列存储索引时,MERGE被禁用。
  2. 对于内存优化表,列存储索引必须包含所有的列,也不能使用筛选。
  3. 对于内存优化表,列存储索引只能在InterOp模式下运行,并且支持并发查询。
 
 
     
目录
相关文章
|
4月前
|
存储 SQL 关系型数据库
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
mysql底层原理:索引、慢查询、 sql优化、事务、隔离级别、MVCC、redolog、undolog(图解+秒懂+史上最全)
|
7月前
|
SQL 存储 关系型数据库
SQL优化策略与实践:组合索引与最左前缀原则详解
本文介绍了SQL优化的多种方式,包括优化查询语句(避免使用SELECT *、减少数据处理量)、使用索引(创建合适索引类型)、查询缓存、优化表结构、使用存储过程和触发器、批量处理以及分析和监控数据库性能。同时,文章详细讲解了组合索引的概念及其最左前缀原则,即MySQL从索引的最左列开始匹配条件,若跳过最左列,则索引失效。通过示例代码,展示了如何在实际场景中应用这些优化策略,以提高数据库查询效率和系统响应速度。
283 10
|
8月前
|
SQL 索引
【YashanDB知识库】字段加上索引后,SQL查询不到结果
【YashanDB知识库】字段加上索引后,SQL查询不到结果
|
9月前
|
SQL 关系型数据库 OLAP
云原生数据仓库AnalyticDB PostgreSQL同一个SQL可以实现向量索引、全文索引GIN、普通索引BTREE混合查询,简化业务实现逻辑、提升查询性能
本文档介绍了如何在AnalyticDB for PostgreSQL中创建表、向量索引及混合检索的实现步骤。主要内容包括:创建`articles`表并设置向量存储格式,创建ANN向量索引,为表增加`username`和`time`列,建立BTREE索引和GIN全文检索索引,并展示了查询结果。参考文档提供了详细的SQL语句和配置说明。
277 2
|
SQL Oracle 关系型数据库
SQL优化-使用联合索引和函数索引
在一次例行巡检中,发现一条使用 `to_char` 函数将日期转换为字符串的 SQL 语句 CPU 利用率很高。为了优化该语句,首先分析了 where 条件中各列的选择性,并创建了不同类型的索引,包括普通索引、函数索引和虚拟列索引。通过对比不同索引的执行计划,最终确定了使用复合索引(包含函数表达式)能够显著降低查询成本,提高执行效率。
206 3
|
SQL 关系型数据库 MySQL
如何确认SQL用了索引:详细技巧与方法
在数据库管理中,索引是提高SQL查询性能的重要手段
2256 5
|
SQL 存储 数据库
SQL学习一:ACID四个特性,CURD基本操作,常用关键字,常用聚合函数,五个约束,综合题
这篇文章是关于SQL基础知识的全面介绍,包括ACID特性、CURD操作、常用关键字、聚合函数、约束以及索引的创建和使用,并通过综合题目来巩固学习。
449 1
|
SQL 存储 关系型数据库
SQL默认索引是什么:深入解析与技巧
在SQL数据库中,索引是一种用于提高查询性能的重要数据结构
|
SQL 存储 关系型数据库
SQL默认索引是什么
在SQL数据库中,索引是一种用于提高查询性能的数据结构
|
SQL 关系型数据库 MySQL
如何确认SQL用了索引
在数据库管理和优化过程中,确认SQL查询是否使用了索引是一个至关重要的步骤