Bei einer Join-Operation zwischen zwei Unterabfragen (oder einer Tabelle und einer Unterabfrage) wird die LIMIT-Klausel vorzugsweise in einer inneren Abfrage und nicht in der äußeren Abfrage angegeben Bestimmen Sie die Anzahl der Zeilen, die das DBMS durchlaufen müsste, um die where-Klausel zu überprüfen)? wie:Leistung in mysql Joins mit Unterabfrage und Grenzwert
(( SELECT id FROM Table1 WHERE score>=100 LIMIT 10) AS A NATURAL JOIN Table2 ))
wäre besser als
(( SELECT id FROM Table1 WHERE score>=100) AS A NATURAL JOIN Table2 )) LIMIT 10
Mein Denken ist, dass in der letzten Abfrage, die DBMS ersten iterieren müssen (vollständige Tabelle oder einen Index) alle Zeilen in Tabelle 1 Wobei score> = 100, die Tabelle2 in ihren gemeinsamen Spalten (die beliebig viele Zeilen sein können) zugeordnet werden können und erst danach auf nur 10 Zeilen abgeschnitten werden, während sie in der ersten Abfrage nur so lange scannen, bis sie es haben habe 10 Zeilen aus Table1 gefunden, die die where-Klausel erfüllen und Table2, th zugeordnet werden können en stop ....