Vinzenz Mai: SQL-Performance-Frage

Beitrag lesen

Hallo,

a) dem DBMS eine Reihe von "DELETE"-Anweisungen in Form von:
DELETE FROM x WHERE y = 1;
DELETE FROM x WHERE y = 3;
DELETE FROM x WHERE y = 4;
usw.

zum batch verarbeiten zu übergeben, oder

dürfte die schlechteste Performance bringen. Lässt sich nur mit Prepared Statements beschleunigen.

b) dem Datenbanksystem EINE Anweisung á la:
DELETE FROM x  WHERE y = 1 OR y = 3 OR y = 4...usw.

oder vielleicht:
c) DELETE FROM x WHERE y IN (1, 3, 4, ...usw.)

Was ist "geschickter" oder wird das System sowas bemerken und es intern sowieso identisch behandeln?

a) im Gegensatz zu b) und c): nein, das kann das System nicht bemerken.
Befrage Dein DBMS, was es damit macht. Es gibt sowas wie Ausführungspläne, andere SQL-Dialekte kennen EXPLAIN ...

Optimierung von SQL-Statements ist extrem DBMS-abhängig und kann zudem von den vorhandenen Daten und dem DB-Design abhängen.

Freundliche Grüße

Vinzenz