MySQL wählt Zeilen aus, die in einer anderen Tabelle nicht vorhanden sind
Um alle Zeilen abzurufen, die in Tabelle A, aber nicht in Tabelle B vorhanden sind, während die gemeinsame Primärdatenbank genutzt wird Schlüssel stehen einige Methoden mit unterschiedlichen Auswirkungen auf die Leistung zur Verfügung.
Verwenden einer Unterabfrage mit NOT EXISTS:
Ihr erster Ansatz mit einer Unterabfrage mit NOT EXISTS ist praktikabel Option, kann aber relativ langsam sein, insbesondere bei größeren Datensätzen.
Verwenden eines Left Joins:
Wie Sie festgestellt haben, kann ein Left Join eine schnellere Leistung erbringen. Wenn Sie Tabelle A mit Tabelle B in der gemeinsamen Spalte verbinden, haben Zeilen in Tabelle A, die mit keiner Zeile in Tabelle B übereinstimmen, NULL-Werte in der Verknüpfungsspalte. Durch das Filtern nach diesen NULL-Werten werden die gewünschten Zeilen effektiv isoliert.
Codebeispiel:
<code class="sql">SELECT * FROM A LEFT JOIN B ON A.x = B.y WHERE B.y IS NULL;</code>
Zusätzliche Tipps:
Gesamtfazit:
Während die Left-Join-Methode normalerweise den Unterabfrage-Ansatz übertrifft, kann die optimale Lösung je nach variieren den spezifischen Datensatz und das Schema. Es werden Experimente und Leistungstests empfohlen, um den effizientesten Ansatz in jeder Situation zu ermitteln.
Das obige ist der detaillierte Inhalt vonWie wählt man effizient Zeilen aus einer Tabelle aus, die in einer anderen Tabelle nicht vorhanden sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!