Соединение вложенного цикла
Эта статья нуждается в дополнительных цитатах для проверки . ( январь 2021 г. ) |
Соединение вложенных циклов — это простой алгоритм , который объединяет два отношения с помощью двух вложенных циклов . [1] Операции соединения важны для управления базами данных .
Алгоритм
[ редактировать ]Два отношения и соединяются следующим образом:
algorithm nested_loop_join is for each tuple r in R do for each tuple s in S do if r and s satisfy the join condition then yield tuple <r,s>
Этот алгоритм будет включать n r *b s + b r блочные передачи и n r +br r поиск, где br и b s — количество блоков в отношениях R и S соответственно, а n r — количество кортежей в отношении R. .
Алгоритм работает в ввод/вывод, где и количество кортежей, содержащихся в и соответственно, и его можно легко обобщить для объединения любого количества отношений...
Алгоритм вложенных циклов блоков соединения [2] является обобщением простого алгоритма вложенных циклов, который использует дополнительную память для уменьшения количества раз, когда отношение сканируется. Он загружает большие фрагменты отношения R в основную память. Для каждого фрагмента он сканирует S и оценивает условие соединения для всех пар кортежей, находящихся в данный момент в памяти. Это уменьшает количество сканирований S до одного раза для каждого фрагмента.
Вариант соединения индекса
[ редактировать ]Если внутреннее отношение имеет индекс атрибутов, используемых в соединении, то наивное соединение вложенного цикла можно заменить объединением индекса.
algorithm index_join is for each tuple r in R do for each tuple s in S in the index lookup do yield tuple <r,s>
Временная сложность для этого варианта улучшается с
См. также
[ редактировать ]Ссылки
[ редактировать ]