2
比方說,我們有如下表:SQL Server 2012:列存儲索引如何一次提供多個列?
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)。
這是如何在內部工作的?
列存儲索引的內部現在還沒有很好的記錄(並且不確定它們是否會像文檔反覆提到專有方法一樣)。你可能會發現[這個答案](http://dba.stackexchange.com/a/10529/3690)(和評論中的鏈接)有用。功能點演示講述了段密鑰和連接索引。 – 2012-03-18 21:32:39