SQL MySQL DB Optimierung

Krafty

Lt. Commander
Dabei seit
Sep. 2009
Beiträge
1.146
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.
 

Krafty

Lt. Commander
Ersteller dieses Themas
Dabei seit
Sep. 2009
Beiträge
1.146
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 :)
 

ice-breaker

Commodore
Dabei seit
Nov. 2008
Beiträge
4.133
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.
 

benneq

Admiral
Dabei seit
Juli 2010
Beiträge
9.233
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).
 
Top