列存储索引中列的顺序是否在SQL Server 2012中很重要

时间:2012-04-02 04:47:46

标签: sql sql-server sql-server-2012 columnstore

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

4 个答案:

答案 0 :(得分:5)

最重要的方面是将所有列添加到Columnstore索引。我与MSFT产品团队就此进行了交谈,因为我对“列顺序无关紧要”的说法持怀疑态度。但他们证实,只要你添加了所有表的列,就是这样。

我还尝试了部分列存储索引(即只添加列的子集),而我能够获得我测试的查询以使用该列存储索引,显然,查询优化器不是为此方案构建的,因为执行计划将是不重要的,并不总是最优的,即使用columnstore和非列存储索引等。

答案 1 :(得分:3)

不,它没有任何区别。

答案 2 :(得分:1)

不,列顺序无关紧要,还要为所有用例添加列存储索引所需的所有列,因为只能有1个列存储索引,不会影响性能。

答案 3 :(得分:1)

它没有。

我刚刚创建了2小时前我的Fact Table的列存储索引,查询成本(相对于批处理)现在是14%的索引和86%没有索引。我觉得它很不错。执行计划如下。 您可以使用" OPTION(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX)"当您运行查询以进行比较时

http://uploadimage.ro/img.php?image=4508_execution_plan_sk6y.png