- Алгоритм соединения хэшированием
-
Алгоритм соединения хэшированием (hash join) разновидность алгоритма соединения.
Алгоритм получает на вход 2 таблицы и условие соединения. Результатом его работы является таблица с результатами соединения.
Меньшая из двух входных таблиц помещается в специальную структуру данных в памяти: хэш-таблицу, которая обеспечивает очень высокую скорость поиска. Затем для каждой строки из большей таблицы выполняется поиск значений, соответствующих условию соединения. Результаты помещаются в выходную таблицу.
На псевдокоде алгоритм можно описать примерно так:
[ХэшТаблица] = СтроитьХэшТаблицу([МеньшаяТаблица], [УсловиеСоединения]); Для каждой строки [r] из [БольшаяТаблица] Вывести ([r], ИскатьВХэшТаблице([ХэшТаблица],[r]));
Преимущества:
- Соединение хэшированием существенно быстрее соединения вложенными циклами. При относительно небольшом размере меньшей таблицы это самый эффективный вид соединения.
Недостатки:
- Условием соединения может быть только равенство.
- Большая потребность в памяти для построения хэш-таблицы, что крайне ограничивает масштабируемость алгоритма при увеличении размеров меньшей таблицы.
- Хэш таблица должна быть построена полностью, до того как первый результат будет записан в результирующую таблицу, что делает этот вид соединения неприемлемым при необходимости получить первую строку результата как можно быстрее.
В реальных системах используются более изощрённые схемы хэширования, чем в приведённом примере, в основном нацеленные на то чтобы уменьшить потребность в памяти для построения хэш-таблицы. Например обе таблицы могут разбиваться на части и хэш строится не для всей таблицы, а только для её части.
Для улучшения этой статьи желательно?: - Найти и оформить в виде сносок ссылки на авторитетные источники, подтверждающие написанное.
- Викифицировать статью.
Категории:- СУБД
- Хеширование
Wikimedia Foundation. 2010.