在SQLServer2012中,columnstore索引中列的顺序重要吗

在SQLServer2012中,columnstore索引中列的顺序重要吗,sql,sql-server,sql-server-2012,columnstore,Sql,Sql Server,Sql Server 2012,Columnstore,我有一个表,大约有2亿行和15列。我计划在我的表上创建列存储索引。根据我在列存储索引中使用的列的顺序,性能是否会有任何变化?如果是,其背后的逻辑是什么?否,这没有任何区别。否,列顺序不重要,也可以将所有需要的列添加到所有用例的列存储索引中,因为只有一个列存储索引,这不会影响性能。最重要的方面是将所有列添加到Columnstore索引中。我和微软产品团队谈过这个问题,因为我对“列顺序无关紧要”的说法表示怀疑。但他们确认,只要添加表中的所有列,这是正确的 我还尝试了部分列存储索引(即仅添加列的子集)

我有一个表,大约有2亿行和15列。我计划在我的表上创建列存储索引。根据我在列存储索引中使用的列的顺序,性能是否会有任何变化?如果是,其背后的逻辑是什么?

否,这没有任何区别。

否,列顺序不重要,也可以将所有需要的列添加到所有用例的列存储索引中,因为只有一个列存储索引,这不会影响性能。

最重要的方面是将所有列添加到Columnstore索引中。我和微软产品团队谈过这个问题,因为我对“列顺序无关紧要”的说法表示怀疑。但他们确认,只要添加表中的所有列,这是正确的

我还尝试了部分列存储索引(即仅添加列的子集),虽然我能够获得我测试的查询以使用该列存储索引,但显然查询优化器并不是针对这种情况构建的,因为执行计划将是不一致的,并不总是最优的,即使用列存储和非列存储索引,等等

它没有

我2小时前刚刚为我的事实表创建了一个columnstore索引,现在有索引的查询成本(相对于批次)为14%,没有索引的查询成本为86%。我觉得很好。执行计划如下。 在运行查询进行比较时,可以使用“选项(忽略\u非聚集\u列存储\u索引)”


继续提问可能会更好,但+1--这对我来说是个新闻。@OMGPonies:谢谢,我也在dba.stackexchange上发表了文章。这是一个链接,这个链接提供了更多的细节。