【发布时间】:2012-03-18 18:34:57
【问题描述】:
假设我们有下表:
CREATE TABLE T (
ID INT,
String1 nvarchar(400),
String2 nvarchar(400)
)
还有一个查询:
select String1, String2, count(*)
from T
group by String1, String2
如果 T 由 column-store index 索引,则此分组查询通常由非聚集列存储索引扫描驱动。
如果列存储索引以逐列格式存储行,并且每列单独排序,那么它如何一次为每行提供多个列? 这似乎是不可能,因为各个列按不同的排序顺序排序。我想不出任何方法可以将各个列合并回包含两列的整行(本例中为 String1、String2)。
这在内部是如何工作的?
【问题讨论】:
-
列存储索引的内部结构目前没有很好的文档记录(并且不确定它们是否会成为文档反复提及专有方法)。不过,您可能会发现 this answer(以及 cmets 中的链接)很有用。 PowerPoint 演示文稿讨论了段键和连接索引。
标签: sql sql-server database sql-server-2012 columnstore