1. Andmebaasi tabelid
Vaatame kahte tabelit: Klient ja Tellimus. Soovime leida iga tellimuse jaoks kliendi nime (JOIN tingimus: Klient.klient_id = Tellimus.klient_id).
Klient (Tabel A)
Tellimus (Tabel B)
Algoritmi valik
Pesastatud tsükli algoritm (Nested Loop Join)
Võetakse esimene rida välimisest tabelist ja võrreldakse seda kõigi ridadega sisemisest tabelist. Seejärel võetakse teine rida jne. Välimiseks tabeliks valitakse see, kus on võrreldes sisemise tabeliga vähem ridu, mis lähevad ühendamise sisendiks.
Kasutatakse: Väikeste tabelite puhul või kui liitmistingimusel pole indekseid.
Sortimise ja mestimise algoritm (Merge Sort Join)
Mõlemad tabelid sorditakse ühendatava veeru alusel. Seejärel liigutakse mõlemas tabelis paralleelselt edasi nagu tõmblukuga.
Kasutatakse: Suurte andmemahtude korral, kui andmed on juba sorditud või vajavad nagunii sortimist.
Räsühendamine (Hash Join)
Väiksemast tabelist tehakse mällu "räsitabel" (hash table). Seejärel skaneeritakse suurt tabelit ja kontrollitakse vastavust räsiväärtuse kaudu.
Parim valik meie näite puhul: Suurte sorteerimata andmete ja "=" võrdluse puhul kõige kiirem.
Samm-sammult selgitus (Logi)
Tulemustabel (Result Set)
Mis teeb selle lahenduse parimaks?
Selles konkreetses näites (sorteerimata juhuslikud ID-d) on tavapärastes süsteemides enamasti eelistatud Hash Join, kuna see ei nõua tabelite eelnevat kulukat sortimist (nagu Merge Join) ega läbi tabelit B korduvalt iga tabeli A rea jaoks (nagu Nested Loop).