Abfragendauer reduzieren

alexfrenzel92

SQL-Guru
Beiträge
122
Code:
SELECT Heim.column2 AS a, Auswaerts.column2 AS b, foo6.Bezeichnung AS column5Name, foo6.Bezeichnung AS EreignisName 
FROM foo1
INNER JOIN foo2 ON foo2.SpielID = foo1.SpielID AND foo2.column1 = foo1.column1
INNER JOIN foo3 AS Heim ON foo2.HeimID = Heim.VereinsID
INNER JOIN foo3 AS Auswaerts ON foo2.AuswaertsID = Auswaerts.VereinsID
INNER JOIN foo4 ON foo4.column3 = foo1.column3
INNER JOIN foo5 ON foo1.column5 = foo5.column5
INNER JOIN foo6 ON foo6.EreignisID = foo1.Ereignis
WHERE foo1.SpielID = 29
AND foo1.column1 = 2
AND (foo4.column3, foo4.Datum) IN (SELECT column3, MAX(Datum)
FROM foo4 GROUP BY column3)
ORDER BY priority1 asc, priority2 asc LIMIT 53,1

Hallo,

0,0689 Sekunden dauerte diese Abfrage noch bevor ich
Code:
AND (foo4.column3, foo4.Datum) IN (SELECT column3, MAX(Datum) FROM foo4 GROUP BY column3)
hinzufügte.

Leider erfüllt diese Abfrage ihren Zweck nur mit dem Zusatz und dauert nun 4,8858 Sekunden, nachdem ich in die Tabellen der Datenbank auch einige Indizes erstellt habe. (Davor waren es über 5 Sekunden)

Gibt es eine Möglichkeit, diese Dauer zu reduzieren? Bzw. einen Grund dafür, weshalb sie sich durch einen geringen Zusatz fast ver-100-facht?

Vg
 
Werbung:
Ja EXPLAIN sagt dir welche (Zeit-)Kosten deine Abfrage hervorruft. Grundsätzlich ist die Abfrage zu umfangreich um da irgendwelche generellen Aussagen zu treffen.
 
Werbung:
Leider erfüllt diese Abfrage ihren Zweck nur mit dem Zusatz und dauert nun 4,8858 Sekunden, nachdem ich in die Tabellen der Datenbank auch einige Indizes erstellt habe. (Davor waren es über 5 Sekunden)

wenn sich die Abfrage von 5,x auf 4,9 Sekunden reduziert dann liegt das wohl eher an Caching-Effekten als an einem neuen Index.
Read the Explain - wobei dieser Rat bei MySQL auch nicht viel Wert ist, weil das Explain nicht viel Wert ist.

Wie lange braucht denn das Subselect?
 
Zurück
Oben