有没有办法说服SQL Server 2014在连接列存储索引表时执行连接消除?
我们有一个标准的维度模型,带有事实表和维度,还有一些视图将事实与它们的多个维度连接在一起,以方便用户。
在使用传统的行存储表时,如果给定查询不需要连接,我们可以利用SQL的能力从这些方便的视图中消除连接,因为事实和维度之间定义了FK/PK关系,这使得查询规划器可以确保连接不会添加或删除行。
但是,我们希望将事实表转换为列存储,因为对于通常在数据仓库上执行的聚合查询类型,它们具有巨大的性能改进。但是如果我们这样做,我们就失去了定义外键的能力,因为列存储不支持外键。反过来,这阻止了规划者进行联接消除,使得方便的视图在许多情况下进行了一大堆不必要的联接。
有没有办法说服规划者在不使用外键的情况下进行连接消除?
发布于 2016-07-27 08:10:43
据我所知,对于SQL Server 2014,这是不可能的。您可以使用SQL Server2016集群列存储和外键轻松获得它... :)在SQL Server2014RTM& SP1分支的一些最新累积更新中,有一个有趣的错误修复程序可以提高一些性能,但我知道它并不完全是您想要的:Query plan generation improvement for some columnstore queries in SQL Server 2014 or 2016
https://stackoverflow.com/questions/30293342
复制相似问题