ChrisB: performance problem

Beitrag lesen

Hi,

Nun möchte ich alle Datensätze herausfiltern, die eine doppelte ID (id) haben.

Ein Feld id zu benennen, dass nicht in der Lage ist, Datensätze eindeutig zu identifizieren, ist ziemlich "pervers".

SELECT *
FROM test
WHERE id
IN (

SELECT id
FROM test
GROUP BY id
HAVING count( id ) >1
)

Leider dauert diese Abfrage sehr lange ( > 30 sec, es handelt sich nur um ca. 1000 Datensätze). Woran kann das liegen?

Was sagt EXPLAIN zum Statement?

Und wieso führst du hier überhaupt eine Subquery aus?
Du "musst" wohl, weil du keine vernünftige Möglichkeit (vorgesehen) hast, Datensätze zu identifizieren - so dass dir nur bleibt, aussen herum den kompletten Datensatzinhalt zu ermitteln, um diesen beim Löschen zur Selektion verwenden zu können?

MfG ChrisB

--
Light travels faster than sound - that's why most people appear bright until you hear them speak.