MySQL Query Optimierung: Alle Einträge holen die doppelt vorhanden sind

Wenn man sich alle doppelten Einträge einer Tabelle anzeigen lassen möchte, kann man auf folgende Query zurückgreifen:

Leider habe ich bei großen Tabellen bemerkt, das diese Query sehr lange dauert.
Mein erster Gedanke war natürlich nachzuprüfen ob ein Index auf die Spalte ean gesetzt ist.
Nachdem der Index gesetzt wurde hat sich aber an der Geschwindigkei der Abfrage nichts getan. Aber warum nur? Denn theoretisch müsste diese Abfrage ja diesen Index 2x nutzen. Einmal bei der äüßeren und einmal bei der inneren Abfrage.

Dies kann man mit EXPLAIN schnell nachprüfen:

Sofort sieht man, das der Index bei der äußeren Abfrage nicht von benutzt wird.
Das ist seltsam, weil wenn man die Abfragen einzeln ausführt, der Index jeweils benutzt wird.

Innere Abfrage:

Äußere Abfrage

Warum ist das so? Hat jemand eine Idee?

Lösung

Die Query muss anders aufgebaut werden.

 

Folgende Artikel könnten auch interessieren

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *