В SQL Server вы можете указать подсказки соединения:
- HASH JOIN
- MERGE JOIN
- LOOP JOIN
Каково определение этих трех советов по соединению и когда каждый из них должен использоваться?
источник
В SQL Server вы можете указать подсказки соединения:
Каково определение этих трех советов по соединению и когда каждый из них должен использоваться?
Из MSDN, в разделе « Концепции расширенной настройки запросов» :
SQL Server использует три типа операций соединения:
Вложенные циклы присоединяются
Слияние присоединяется
Хэш присоединяется
Если один вход объединения является небольшим (менее 10 строк), а другой вход объединения достаточно велик и индексируется по столбцам соединения, соединение с вложенными циклами индекса является самой быстрой операцией соединения, поскольку для них требуется наименьшее количество операций ввода-вывода и наименьшее количество сравнений. Для получения дополнительной информации о вложенных циклах см. Общие сведения о соединениях с вложенными циклами.
Если два входных соединения не малы, но отсортированы по столбцу соединения (например, если они были получены путем сканирования отсортированных индексов), объединение слиянием является самой быстрой операцией соединения. Если оба входных соединения велики, а два входных сигнала имеют одинаковые размеры, объединение слиянием с предварительной сортировкой и объединение хэшей обеспечивают одинаковую производительность. Однако операции хеш-соединения часто выполняются намного быстрее, если два входных размера значительно отличаются друг от друга. Для получения дополнительной информации см. Общие сведения о объединениях слиянием.
Хеш-объединения могут эффективно обрабатывать большие, несортированные, неиндексированные входные данные.
Но я считаю, что вы должны начать с более простой темы: настройка запросов и, наконец, перейти к использованию подсказок запросов.