基于非群集行的索引和基于列存储的索引有什么区别? 例如,有一个包含以下列的表:
ID, Name, family, Description
索引创建脚本:
CREATE NONCLUSTERED INDEX IX_Name
ON TestTable (Name);
CREATE NONCLUSTERED COLUMNSTORE INDEX IX_Name_CS
ON TestTable (Name);
我认为在索引页面中,上述两个索引具有相同的结构?那么上述两个索引之间有什么区别?
答案 0 :(得分:1)
行存储和列存储索引完全不同。您是否查看过documentation?
但是,对于单列,非聚集索引的差异较小。一个基本的区别是列存储自动压缩数据。这样可以大大减少索引的大小。
另一方面,列存储索引通常不用于索引查找操作。通常,整个列都会被扫描。因为列存储索引中的列在行中要小得多,所以这比全表扫描要快得多。通常,它也比扫描具有一列的行存储索引要快。
要使用哪个索引取决于您要运行的查询的类型。我怀疑对于单列,行存储在更多情况下更合适。