11

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

4

4 回答 4

6

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

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

于 2012-05-10T18:56:23.407 回答
3

不,这没有任何区别。

于 2012-04-02T06:50:38.183 回答
1

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

于 2012-04-12T19:03:09.030 回答
1

它没有。

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

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

于 2014-08-14T10:52:17.077 回答