В Oracle, в чем разница между хеш-соединением и сортировочным соединением? - PullRequest
3 голосов
/ 09 ноября 2010

В Oracle я могу использовать подсказки USE_HASH или USE_MERGE, чтобы дать указание оптимизатору выполнить хеш-соединение или сортировку-слияние. Чем отличаются эти типы объединений и когда / почему я должен использовать одно или другое?

Ответы [ 3 ]

5 голосов
/ 09 ноября 2010

Джонатан Льюис опубликовал действительно хорошее объяснение того, как работают хеш-объединения и объединения слиянием:

и для хорошей меры ...

3 голосов
/ 10 ноября 2010

"когда / почему я должен использовать один или другой"

Как правило, вам не следует об этом беспокоиться.Вот для чего оптимизатор Oracle.

2 голосов
/ 09 ноября 2010

Подсказка use_hash запрашивает хеш-соединение с указанными таблицами. Хеш-соединение загружает строки из левой таблицы в хэш-таблицу в памяти.

Подсказка use_merge инициирует операцию сортировки / слияния, которая по существу выполняет полное сканирование таблицы и создает традиционный индекс на лету. То есть, от А до Я.

Из-за ограничений памяти для хеш-соединений их нужно использовать, как правило, только для небольших левых таблиц

Объединения с сортировкой слиянием, как правило, лучше всего подходят для запросов, которые производят очень большие наборы результатов или таблицы, которые не имеют индексов для ключей объединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...