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


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


8105
2018-04-02 04:47


起源

可能会被问到更好 dba.stackexchange,但+1 - 这对我来说是新闻。 - OMG Ponies
@OMGPonies:谢谢,我也发布在dba.stackexchange中。链接在这里 dba.stackexchange.com/questions/15930/... - Vinay Kumar Chella


答案:


不,它没有任何区别。


3
2018-04-02 06:50



此链接提供了更多详细信息。 blogs.technet.com/b/dataplatforminsider/archive/2011/08/04/... - Vinay Kumar Chella


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

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


5
2018-05-10 18:56





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


1
2018-04-12 19:03





它没有。

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

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


1
2017-08-14 10:52