Vinzenz Mai: MySql 5 - Abfrage dauert ewig. Wie kann ich es beschleunigen?

Beitrag lesen

Hallo,

Hallo, ich brauche drigend Eure Hilfe. Ich habe eine Tabelle, die in etwa so aufgebaut ist und ca. 50.000 Einträge enthält.

id | id_durchgang | id_gruppe | anzahl

1 | 1             | 1         | 50
2 | 1             | 2         | 20
3 | 1             | 3         | 10
4 | 2             | 5         | 30
5 | 2             | 1         | 60
6 | 2             | 7         | 20
7 | 3             | 9         | 30
8 | 3             | 8         | 90
9 | 3             | 1         | 80
...
50.000 ...

Ich will die "anzahl" der "id_gruppe" 1 mit der "anzahl" der "id_gruppe" 2 vergleichen.

Bist Du Dir ganz sicher, dass Du einen LEFT JOIN willst?

SELECT
     q2.anzahl - q1.anzahl AS anzahl_unterschied
FROM tabellle AS q1
     LEFT JOIN tabellle AS q2 ON ( q1.id_gruppe = q2.id_gruppe )
WHERE
     q1.id_durchgang = 1
     AND q2.id_durchgang = 2

Warum joinst Du nicht die durch Deine WHERE-Klausel eingeschränkten Ergebnismengen miteinander? Selbst wenne es nur 10 Durchgänge gab, wäre dies bereits eine Reduzierung um einen Faktor 100.

Welche Indexe sind vorhanden, welche können genutzt werden.

Wieviele Durchgänge gibt es, wieviele Gruppen? Ja, das spielt eine Rolle.

Das dauert dauert dann laut "EXPLAIN" im MySql etwa 50.000 x 50.000 Datensätze, also ewig.

Du kennst das Handbuchkapitel Optimization?

Freundliche Grüße

Vinzenz