Warum ist die Duplikatssuche/Duplikatsabfrage bei Access schneller als bei Mysql?
Zur Ermittlung und Anzeige aller doppelten Einträge in einer MySQL Datenbank habe ich zuerst den selben SQL String wie bei Access verwendet.
Die Abfrage dauerte ungewöhnlich lange,so das sich mich auf die Suche nach einer besseren Lösung gemacht habe.
Da der Optimizier von MySQL an dieser Stelle anscheinend anders arbeitet, als der Optimizier von Access muss die Querry anders formuliert werden.
Query Access
SELECT * FROM scan_list
WHERE (((serial) In (SELECT serial FROM scan_list As Tmp
where Serial <> "0" GROUP BY serial HAVING Count(*)>1 )))
ORDER BY serial, timestamp
Query Mysql
SELECT * FROM scan_list s1
WHERE (((serial) IN (SELECT serial FROM scan_list AS Tmp
where s1.serial = Tmp.serial AND serial <> "0" GROUP BY serial HAVING Count( * ) >1)))
ORDER BY serial, timestamp
Hier noch ein Vergleich der Zeiten bei 2500 Datensätzen
Zeige Datensätze 0 - 5 (6 insgesamt, die Abfrage dauerte 4.9410 sek.) = orginal Querry = Access
Zeige Datensätze 0 - 5 (6 insgesamt, die Abfrage dauerte 0.0327 sek.) = geänderte Querry = MySQL