非聚集行索引与列存储索引之间的区别

时间:2018-09-15 16:11:14

标签: sql sql-server database indexing

基于非群集行的索引和基于列存储的索引有什么区别? 例如,有一个包含以下列的表:

ID, Name, family, Description

索引创建脚本:

CREATE NONCLUSTERED INDEX IX_Name   
ON TestTable (Name);   


CREATE NONCLUSTERED COLUMNSTORE INDEX IX_Name_CS 
ON TestTable (Name);   

我认为在索引页面中,上述两个索引具有相同的结构?那么上述两个索引之间有什么区别?

1 个答案:

答案 0 :(得分:1)

行存储和列存储索引完全不同。您是否查看过documentation

但是,对于单列,非聚集索引的差异较小。一个基本的区别是列存储自动压缩数据。这样可以大大减少索引的大小。

另一方面,列存储索引通常不用于索引查找操作。通常,整个列都会被扫描。因为列存储索引中的列在行中要小得多,所以这比全表扫描要快得多。通常,它也比扫描具有一列的行存储索引要快。

要使用哪个索引取决于您要运行的查询的类型。我怀疑对于单列,行存储在更多情况下更合适。