Что-то странное с запросом.
Имеем запрос, который работает ОЧЕНЬ, ну очень медленно в "Вариант1" и быстро в "Вариант2".
РегистрСведений.МойРегистр - периодический РС, имеет 25 млн записей
Измерение "Значение" в РС - первое, имеет отдельный индекс. Тип - справочник определенного типа.
Временная таблица Таб1 - индексирована по полю "Значение", хотя значений там немного, несколько тысяч.
Вариант1 (медленный):
ВЫБРАТЬ РАЗЛИЧНЫЕ
МойРегистр.Значение,
МойРегистр.Статус
ПОМЕСТИТЬ МойРегистр
ИЗ
РегистрСведений.МойРегистр КАК МойРегистр
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Таб1 КАК Таб1
ПО Таб1.Значение = МойРегистр.Значение
Вариант2 (быстрый):
ВЫБРАТЬ РАЗЛИЧНЫЕ
МойРегистр.Значение,
МойРегистр.Статус
ПОМЕСТИТЬ МойРегистр
ИЗ
РегистрСведений.МойРегистр КАК МойРегистр
ГДЕ
Значение В (ВЫБРАТЬ Таб1.Значение ИЗ Таб1)
Запрос в SQL при этом выглядит так:
INSERT INTO #tt7 (_Q_001_F_000RRef, _Q_001_F_001RRef) SELECT DISTINCT
T1._Fld18584RRef,
T1._Fld18588RRef
FROM _InfoRg18583 T1 WITH(NOLOCK)
INNER JOIN #tt4 T2 WITH(NOLOCK)
ON (T2._Q_001_F_002RRef = T1._Fld18584RRef)
Вот тут положил планы запроса и картинку сравнения двух планов.
https://disk.yandex.ru/d/p5qKV-yfN_-aBw
Почему-то первый вариант на картинке выдаёт дикое количество строк. Видимо, поэтому тормозит.
https://disk.yandex.ru/i/J7K2PLhaVfbSXA
Статистику обновлял.
В чем дело? Почему внутреннее соединение так тормозит?