SQL MySQL DB Optimierung

Krafty

Lt. Commander
Registriert
Sep. 2009
Beiträge
1.177
Hallöchen meine Freunde der Sonne,

an welcher Schraube muss man drehen, wenn Subselects eine Ewigkeit brauchen (>1 Sekunde pro Query) um resolved zu werden?

Beispiel:

UPDATE tablex SET y = z WHERE a IN (SUBSELECT) dauert ewig.

Zuerst den Subselect auszuführen und die erhaltenen Werte dann in oben stehende Query einzusetzen dauert nichtmal ne 1000stel Sekunde.
 
Danke dir, umgeschrieben ist das Script schon lange auf pre-fetchen, weil es unsäglich lange brauchte.

Ich wusste nur nicht wieso das der Fall ist, aber dank dir bin ich nun schlauer :)
 
Generell ist noch immer in den meisten Fällen von Subselects abzuraten, denn MySQLs Optimierungen dafür sind immernoch sehr düftig, das ändert sich erst mit 6.0 - die meisten Sub-Selects werden sowieso aktuell von MySQL in Joins umgeschrieben, also entweder man schreibt den Join gleich selbst oder baut ihn, wie in dem von PeteC verlinkten Artikel, um.
 
Gib uns doch mal 'nen Ausschnitt deiner Datenbank und eine ganze Beispielabfrage. Von Hand kann man da bestimmt was reißen. Evtl. könntest du sonst auch noch mit Prepared Statements ein Quäntchen beschleunigen (viel bringt's meist nicht, eher mehr Sicherheit).
 
Zurück
Oben