Alăturare buclă imbricată - Nested loop join
O îmbinare cu buclă imbricată este un algoritm naiv care unește două seturi folosind două bucle imbricate . Operațiunile de asociere sunt importante pentru gestionarea bazelor de date .
Algoritm
Două relații și sunt unite după cum urmează:
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>
Acest algoritm va implica transferuri de blocuri n r * b s + b r și căutări n r + b r , unde b r și b s sunt numărul de blocuri în relațiile R și respectiv S, iar n r este numărul de tupluri în relația R .
Algoritmul rulează în I / Os, unde și este numărul de tupluri conținute în și respectiv și poate fi ușor generalizat pentru a uni orice număr de relații ...
Buclă imbricată bloc se alăture algoritm este o generalizare a simplu bucle imbricate algoritm care profită de suplimentare de memorie pentru a reduce numărul de ori că relația este scanată. Încarcă bucăți mari de relație R în memoria principală. Pentru fiecare bucată, scanează S și evaluează condiția de asociere pe toate perechile de tupluri, aflate în prezent în memorie. Aceasta reduce numărul de scanări ale S-ului la o singură bucată.
Variația indexării
Dacă relația interioară are un index pe atributele utilizate în îmbinare, atunci îmbinarea naivă cu buclă cuib poate fi înlocuită cu o îmbinare index.
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>
Complexitatea timpului pentru această variație se îmbunătățește de la O ( M * N ) la O ( M * log N ).
Vezi si
Referințe
| Acest articol de informatică este un butuc . Puteți ajuta Wikipedia extinzându-l . |