假设我们有下表:
CREATE TABLE T (
ID INT,
String1 nvarchar(400),
String2 nvarchar(400)
)
和一个查询:
select String1, String2, count(*)
from T
group by String1, String2
如果 T 由列存储索引索引,则此分组查询通常由非聚集列存储索引扫描驱动。
如果列存储索引以逐列格式存储行,并且每列单独排序,那么它如何一次为每行提供多个列?这似乎是不可能的,因为各个列以不同的排序顺序排序。我想不出任何方法可以将各个列合并回包含两列(本例中为 String1、String2)的整行。
这在内部如何运作?