A beágyazott hurkok összekapcsolási algoritmusa az összekapcsolási algoritmus egy változata .
Általános esetben az algoritmus n táblát és csatlakozási feltételt kap bemenetként. Munkájának eredménye a kapcsolat eredményeit tartalmazó sorok halmaza.
Két táblára leegyszerűsítve az algoritmus a következőképpen írható le: az egyik tábla (master) minden sorára a másik táblában (szolga) keresést hajtanak végre az összekapcsolási feltételnek megfelelő sorok után.
Ez a legáltalánosabb esetben az eredeti táblák derékszögű szorzatának fokozatos felépítése az egyes sorkombinációk összekapcsolási feltételének elemzésével. A pszeudokódban ez így írható:
A [Key Table] minden egyes sorához [r] Az [Irányított táblázat] soraihoz Ha SatisfyCondition([r],[s],[Join Condition]) Kimenet ([r], [s]);Ha a szolga táblának van egy indexe , amely a kiválasztott összekapcsolási feltételre vonatkozik, az összekapcsolás sokkal hatékonyabban hajtható végre. A pszeudokódban ez a következőképpen fejezhető ki:
A [Key Table] minden egyes sorához [r] Output([r], SearchIndex([Irányított táblázat], [r], [Csatlakozási feltétel]));Az algoritmus tetszőleges számú egymásba ágyazott iterációból áll az adatok keresése során az egyesített táblákban.
A külső ciklus sorokat keres a kimutatástáblázatban . Ha a vezető tábla megszorításai közül néhány vagy az összes használható az indexben való kereséshez, akkor a ciklus minden iterációja során megkeresi az összes szükséges sor helyét az indexben, és közvetlen hozzáférést hajt végre a táblához. Ellenkező esetben a rendszer a teljes táblázatot szkenneli. A fennmaradó korlátok a kiválasztott sorok szűrésére szolgálnak. Minden fennmaradó sornál a belső hurkot hívják .
A belső ciklus sorokat keres a slave táblában az összekapcsolási feltételek és a külső hurok adatai alapján . Ha a slave táblán lévő megszorítások egy része vagy mindegyike a külső ciklusból származó kényszerekkel együtt használható az indexben való kereséshez, akkor a ciklus minden iterációja során az összes szükséges sor helyét megkeresi az indexben. és közvetlen hozzáférés történik a slave táblához . Ellenkező esetben a rendszer a teljes táblázatot szkenneli. A fennmaradó korlátok a kiválasztott sorok szűrésére szolgálnak.
A legmélyebb ciklus minden egyes iterációja során a táblázatokból kiválasztott sorokat összefűzzük, hogy megkapjuk a végeredmény sorait.
Általában a hurkok tetszőleges számú alkalommal egymásba ágyazhatók, az összekapcsolásban részt vevő táblák számától függően.
Ha valamilyen ciklusban indexkeresést hajtanak végre, és az index összes oszlopa elegendő a végeredmény megszerzéséhez, akkor ebben a ciklusban nem történik közvetlen hozzáférés a táblázathoz.