Rolf B: SQL-Abfrage Effizienz?

Beitrag lesen

Hallo MudGuard,

ja, hm, das wäre dann sowas wie

(SELECT id FROM tabelle 1 WHERE vorgang='XY'
EXCEPT
SELECT id FROM tabelle 2 WHERE vorgang='XY')
UNION ALL
(SELECT id FROM tabelle 2 WHERE vorgang='XY'
EXCEPT
SELECT id FROM tabelle 1 WHERE vorgang='XY')

In meinem Mariechen hat der Explain zu diesem Ding 8 Zeilen und ich verstehe ihn nicht wirklich.

Weglassen der Klammern um den ersten Teil liefert das gleiche, hat aber nur 7 Zeilen im EXPLAIN:

SELECT id FROM tabelle 1 WHERE vorgang='XY'
EXCEPT
SELECT id FROM tabelle 2 WHERE vorgang='XY'
UNION ALL
(SELECT id FROM tabelle 2 WHERE vorgang='XY'
EXCEPT
SELECT id FROM tabelle 1 WHERE vorgang='XY')

Die Klammern um den zweiten Teil sind erforderlich, sonst wird zu viel entfernt.

Der Explain zu Svens Ansatz hat 4 Zeilen. Aber ein kleinerer Explain ist nicht unbedingt eine schnellere Query, das müsste man mit einer größeren DB und korrekten Indexen messen. Meine ist zu klein und ich mag mir jetzt keine Dummy-DB zusammenscripten.

Rolf

--
sumpsi - posui - obstruxi