Varbinary (20) присоединяется, выступая плохо - PullRequest
0 голосов
/ 25 июня 2018

У меня проблема с производительностью, у меня есть столбец сценического факта с примерно 2 миллионами записей с ~ 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

Это при наличии около 2 миллионов тестовых данных - занимает около 8 минут. На производстве может быть около 10 миллионов данных каждый месяц. Это способ замедления для наших нужд.

Есть ли способ как улучшить его?

В каждой таблице измерений уже есть некластеризованные индексы, содержащие суррогатный ключ и бизнес-ключ.

Я попытался поместить все столбцы businesskey в индекс columnstore, но это не помогает. Также я попытался добавить 40 некластеризованных индексов в каждый из столбцов businesskey в stage_fact - это занимает около 2 минут, но все равно не влияет на производительность (оптимизатор в любом случае выполняет сканирование таблиц).

Буду благодарен за любые идеи по улучшению этого запроса.

С уважением,

EDIT: План выполнения запроса здесь: План выполнения

...