WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Алгоритм соединения хешированием (англ. hash join) — разновидность алгоритма соединения.

Алгоритм получает на вход две таблицы и условие соединения. Результатом его работы является таблица с результатами соединения.

Меньшая из двух входных таблиц помещается в специальную структуру данных в памяти: хеш-таблицу, которая обеспечивает очень высокую скорость поиска. Затем для каждой строки из большей таблицы выполняется поиск значений, соответствующих условию соединения. Результаты помещаются в выходную таблицу.

На псевдокоде алгоритм можно описать примерно так:

[ХешТаблица] = СтроитьХешТаблицу([МеньшаяТаблица], [Имена колонок МеньшейТаблицы по которым будет делаться соединение]);
Для каждой строки [r] из [БольшаяТаблица]
   Вывести ([r], ИскатьВХешТаблице([ХешТаблица],[Имена колонок БольшойТаблицы по которым делается соединение]));

Преимущества

  • Соединение хешированием существенно быстрее соединения вложенными циклами. При относительно небольшом размере меньшей таблицы это самый эффективный вид соединения.

Недостатки

  • Условием соединения может быть только равенство.
  • Большая потребность в памяти для построения хеш-таблицы, что крайне ограничивает масштабируемость алгоритма при увеличении размеров меньшей таблицы.
  • Хеш-таблица должна быть построена полностью, до того как первый результат будет записан в результирующую таблицу, что делает этот вид соединения неприемлемым при необходимости получить первую строку результата как можно быстрее.

В реальных системах используются более изощрённые схемы хеширования, чем в приведённом примере, в основном нацеленные на уменьшение потребности в памяти для построения хеш-таблицы. Например, данные обеих таблиц разбиваются на части, а хеш-таблица строится только для одной из этих частей.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2025
WikiSort.ru - проект по пересортировке и дополнению контента Википедии