Nested Loops ist eine Art der Verarbeitung verbindet:
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
, die mit Indizes optimiert werden kann einiges, von „für jede Zeile an Schlüssel K in einem gewissen Index gefunden“ statt „jeder Zeile zu tun von Tabelle A ", und das gleiche mit Tabelle B.
Die Präsentation sagt, das ist die einzige Möglichkeit, MySQL-Prozesse beizutreten. Es gibt andere Methoden, die verwendet werden können, aber MySQL implementiert sie nicht. Dieser OraFAQ-Eintrag gibt mehrere, die Oracle implementiert: http://oracle-online-help.blogspot.com/2007/03/nested-loops-hash-join-and-sort-merge.html
"Alles ist ein Join" ist nur ein Implementierungsdetail, glaube ich. Nicht wirklich so wichtig.
Ich fragte nach SINGLE TABLE wählt auf MySQL, so dass Ihre Antwort nicht zutrifft. Sie können denken, dass es "nicht wirklich so wichtig ist", aber ich tue es. Ich würde immer noch gerne * meine * Frage beantwortet. – RADA
@RADA: Ich bin mir nicht sicher, wie genau MySQL einen Single-Table-Select in einen Join umwandelt. Vielleicht verbindet es sich zu einer Dummy-Tabelle mit einer Zeile oder Links-Join zu einer Null-Zeile-Dummy-Tabelle? Ich denke, der MySQL-Quellcode würde sicher sagen. – derobert