zagnieżdżonych pętli jest jednym ze sposobów przetwarzania dołącza:
for each row of table A
if this row matches where clauses
for each row of joined table B
if this row matches where clauses and join clauses
accept row
end
end
end
end
To może być zoptymalizowane z indeksami trochę, wykonując „dla każdego rzędu znalezionego na klucz K w pewnym indeksem” zamiast „każdego wiersza tabela A ", i to samo z tabelą B.
Prezentacja mówi, że jest to jedyny sposób łączenia się procesów MySQL. Istnieją inne metody, niż można zastosować, ale MySQL ich nie implementuje. Ten wpis OraFAQ zawiera kilka przykładów implementacji Oracle: http://www.orafaq.com/tuningguide/join%20methods.html Podobnie: http://oracle-online-help.blogspot.com/2007/03/nested-loops-hash-join-and-sort-merge.html
"Wszystko jest złączeniem" to tylko szczegół wdrożenia, jak sądzę. Niezupełnie tak ważne.
Zapytałem o POJEDYNCZY TABELĘ w MySQL, więc odpowiedź nie ma zastosowania. Możesz myśleć, że to "nie jest aż tak ważne", ale robię to. Nadal chciałbym odpowiedzieć na * moje * pytanie. – RADA
@RADA: Nie jestem pewien, w jaki sposób MySQL konwertuje wybór z jednego stołu do łączenia. Może dołącza do niego do atrapowego stołu z jednym rzędem, lub do lewostronnego stolika? Domyślam się, że kod źródłowy MySQL powiedziałby na pewno. – derobert