Heim  >  Artikel  >  Datenbank  >  Wie wählt man effizient Zeilen aus einer Tabelle aus, die in einer anderen Tabelle nicht vorhanden sind?

Wie wählt man effizient Zeilen aus einer Tabelle aus, die in einer anderen Tabelle nicht vorhanden sind?

DDD
DDDOriginal
2024-10-26 11:49:29783Durchsuche

 How to Efficiently Select Rows from One Table that Are Not Present in Another Table?

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:

  • Stellen Sie eine ordnungsgemäße Indizierung der Join-Spalten für beide Tabellen sicher.
  • Verwenden Sie einen abdeckenden Index für Tabelle B, um die Anzahl der Festplattenlesevorgänge zu reduzieren.
  • Erwägen Sie die Verwendung einer UNION-Abfrage mit einem negativen Filter um Zeilen explizit aus Tabelle B auszuschließen.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn