Sql-Server

表可以同時具有聚集列儲存索引和非聚集列儲存索引嗎?

  • February 28, 2020

我的表可以同時具有聚集列儲存索引和非聚集列儲存索引嗎?

我看到了僅將聚集列儲存索引與非聚集二進制行索引一起使用的範例策略。

當我嘗試同時創建聚集列儲存和非聚集列儲存時,我收到錯誤:

Msg 35339, Level 16, State 1, Line 7
Multiple columnstore indexes are not supported.

不,你不能:

CREATE TABLE dbo.cs_test (id INT NOT NULL)

CREATE CLUSTERED COLUMNSTORE INDEX cs_whatever ON dbo.cs_test

CREATE NONCLUSTERED COLUMNSTORE INDEX nc_whatever ON dbo.cs_test(id);

返回錯誤資訊:

消息 35339,級別 16,狀態 1,第 7 行不支持多個列儲存索引。

多個非聚集列儲存索引的結果也相同。

允許這樣做沒有什麼意義。無論如何,這些列在索引中沒有排序。只需在您可以擁有的唯一一個 col-store 索引中包含您想要的所有列(或者如果它是集群的,則所有列都已包含在內)。

(有人可能會爭辯說,如果我們能夠更好地控制建構階段以控制執行行組消除的能力,那麼幾個 col-store 索引可能是有益的。但這最終會使優化器難以決定使用哪個 col-store 索引,除非對每個行組中的 max-min 值有一些統計資訊。除非您研究過 col-store 索引的內部結構,否則這對您來說可能意義不大… :- ) )

引用自:https://dba.stackexchange.com/questions/218674