我有一个约2亿行和约15列的表。我打算在我的桌子上创建列存储索引。根据我在列存储索引中使用的列的顺序,性能是否会有任何变化?如果是,它背后的逻辑是什么?
我有一个约2亿行和约15列的表。我打算在我的桌子上创建列存储索引。根据我在列存储索引中使用的列的顺序,性能是否会有任何变化?如果是,它背后的逻辑是什么?
不,它没有任何区别。
最重要的方面是将所有列添加到Columnstore索引。我与MSFT产品团队就此进行了交谈,因为我对“列顺序无关紧要”的说法持怀疑态度。但他们证实,只要你添加所有表的列,这是真的。
我还尝试了部分列存储索引(即只添加列的子集),而我能够获得我测试的查询以使用该列存储索引,显然查询优化器不是为此方案构建的,因为执行计划将是不一致的并不总是最优的,即使用columnstore和非columnstore索引等。
不,列顺序无关紧要,还要为所有用例添加列存储索引所需的所有列,因为只能有1个列存储索引,这不会影响性能。
它没有。
我刚刚创建了2小时前我的Fact Table的列存储索引,查询成本(相对于批处理)现在是14%的索引和86%没有索引。我认为这很不错。执行计划如下。 运行查询进行比较时,可以使用“OPTION(IGNORE_NONCLUSTERED_COLUMNSTORE_INDEX)”
http://uploadimage.ro/img.php?image=4508_execution_plan_sk6y.png