Varbinary(20)的表现不佳

时间:2018-06-25 09:17:49

标签: performance sql-server-2014

我有一个性能问题,我有一个阶段事实列,其中包含大约200万条记录,其中包含约40个维度的业务密钥列,它们是sha1哈希-varbinary(20)。我的查询如下:

select isnull(dim1.surkey,0)
      ,isnull(dim2.surkey,0)
 -- 40 surrogate keys here
 -- some measures
from stage_fact sf
left join dim1 on sf.dim1businesskey = dim1.businesskey
left join dim2 on sf.dim2businesskey = dim2.businesskey
-- 40 joins here

这大约需要200万测试数据-大约需要8分钟。在生产中,每个月可能有大约1000万个数据。这是减慢我们需求的方法。

有什么方法可以改善它吗?

每个维度表中都有包含代理密钥和业务密钥的非聚集索引。

我试图将所有businesskey列都放在columnstore索引中,但这无济于事。我还尝试在stage_fact的每个businesskey列上添加40个非聚集索引-这大约需要2分钟,但仍然对性能没有帮助(优化器仍然执行表扫描)。

对于改进此查询的任何想法,我将不胜感激。

最诚挚的问候,

编辑: 在这里查询执行计划: Execution Plan

0 个答案:

没有答案