Klaus Mock: MySQL mit 6,2 Mio. Datensätzen

Beitrag lesen

Hallo,

Habe ich schon mal getestet. Das Problem ist das karthesische Produkt der beiden Abfragen, dieses wird zu groß für den Speicher (von der Ausführungszeit ganz zu schweigen)

Hier stellt sich dann gleich mal die Frage, wie viele Datensätze eigentlich von dem Problem betroffen sind.
Wenn es nämlich eine überschaubare größe ist, dann wäre das manualle erstellen einer Löschanweisung auch abzuwägen.

Du könntest aletrnatib auch mit

  
  SELECT MAX(id)  
    FROM tabelle  
   GROUP BY name  
  HAVING count(1) >1  

jeweils eine ID der vorhandenn Dupletten ermitteln und diese dann in der Lösch-Anweisung weiter benutzen.
(Dieses Statement könnte auch mehrmals ausgeführt werden, um auch Drei- oder Mehrfach-Vorkommen zu elimineren)

Ein weiterer Punkt, der in die Überlegungen einfliessen kann, ist ob es mehr Dupletten oder mehr Einzelvorkommen es gibt. Das kann durchaus die Fromulierung eines passenden Statements beeinflussen.

Grüße
  Klaus

[1] Unter Anführungszeichen deshalb, weil dieses 'Feature' in der Regel mehr Kopfzerbrechen bereitet als sinnvoll ist