Одна из моих хранимых процедур выполнялась слишком долго. Взглянув на план выполнения запроса, я смог найти операцию слишком долго. Это был физический оператор вложенного цикла, который имел внешнюю таблицу (строки 65991) и внутреннюю таблицу (строки 19223). На вложенном цикле он показал оценочные строки = 1,268,544,993 (умножив 65991 на 19223), как показано ниже:
Я прочитал несколько статей о физических операторах, используемых для объединений, и немного смутил, было ли в этом случае совпадение вложенного цикла или хэша. Из того, что я мог собрать:
Hash Match - используется оптимизатором, когда нет полезных индексов, одна таблица существенно меньше другой, таблицы не сортируются в столбцах соединения. Также может быть использован хеш-матч, указывающий на более эффективный метод соединения (вложенные циклы или объединение слиянием).
Вопрос: Будет ли хэш-совпадение лучше, чем вложенные циклы в этом сценарии?
Спасибо