sql / intermediate
Snippet
Optimierung von Existenzprüfungen mit EXISTS anstelle von COUNT
Die Verwendung von WHERE EXISTS ermöglicht es dem Datenbank-Query-Engine, die Suche sofort abzubrechen, sobald ein einziger Treffer gefunden wird, was schneller als COUNT-Abfragen ist.
snippet.sql
sql
1
2
3
4
5
SELECT c.customer_id, c.customer_nameFROM customers cWHERE EXISTS (SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id);
Erklärung
1
SELECT c.customer_id, c.customer_name
Fragt die primäre Kunden-ID und den Namen der Zielkunden ab.
2
FROM customers c
Gibt die Hauptkundentabelle mit dem Alias c an.
3
WHERE EXISTS (
Startet eine bedingte Unterabfrage-Existenzprüfung.
4
SELECT 1 FROM orders o WHERE o.customer_id = c.customer_id
Gibt true zurück, sobald die erste passende Bestellung für den Kunden gefunden wird, und bricht weitere Scans ab.
5
);
Schließt den Unterabfrage-Ausdruck ab.