„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich effizient Zeilen aus einer Tabelle auswählen, die in einer anderen nicht vorhanden sind?

Wie kann ich effizient Zeilen aus einer Tabelle auswählen, die in einer anderen nicht vorhanden sind?

Veröffentlicht am 03.11.2024
Durchsuche:116

 How Can I Efficiently Select Rows from One Table That Don\'t Exist in Another?

Optimieren von SQL-Abfragen mit „NOT IN“-Tabellen

In SQL kann die Auswahl von Zeilen, die in einer Tabelle, aber nicht in einer anderen vorhanden sind, mithilfe von „NOT IN“ erreicht werden. Operator. Dieser Ansatz kann jedoch manchmal zu Leistungsproblemen bei großen Datensätzen führen.

Stellen Sie sich ein Szenario vor, in dem Sie zwei Tabellen, A und B, mit denselben Primärschlüsseln haben. Um alle Zeilen aus A auszuwählen, die in B nicht vorhanden sind, können Sie die folgende Abfrage verwenden:

SELECT *
FROM A
WHERE NOT EXISTS (
  SELECT *
  FROM B
  WHERE A.pk = B.pk
);

Diese Abfrage funktioniert zwar, kann jedoch ineffizient sein, insbesondere bei großen Tabellen. Die Datenbank muss für jede Zeile in A eine verschachtelte Abfrage durchführen und deren Vorhandensein in B überprüfen.

Ein besserer Ansatz besteht darin, einen linken Join zu verwenden und die Ergebnisse basierend auf Nullwerten zu filtern. Bei dieser Methode werden A und B in einer gemeinsamen Spalte verbunden und dann Zeilen aus A ausgewählt, wobei die entsprechende Spalte in B null ist:

SELECT A.*
FROM A
LEFT JOIN B
ON A.x = B.y
WHERE B.y IS NULL;

Diese Abfrage führt eine einzelne Verknüpfungsoperation durch und filtert die Ergebnisse basierend auf dem Fehlen eines Werts in B. Dies ist normalerweise schneller als der „NOT IN“-Ansatz für große Datensätze.

Alternativ können Sie eine Unterabfrage in der WHERE-Klausel verwenden:

SELECT A.*    
FROM A
WHERE x NOT IN (
  SELECT y
  FROM B
);

Dieser Ansatz kann auch bei großen Datensätzen eine gute Leistung bieten.

Letztendlich hängt die beste Methode zur Optimierung der Abfrage von der spezifischen Daten- und Datenbankkonfiguration ab. Es wird empfohlen, verschiedene Ansätze zu testen und denjenigen auszuwählen, der die optimale Leistung für Ihre Abfrage bietet.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3