PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : verschachtelte MySQL-Queries unterirdisch langsam?


mf_2
2007-09-17, 14:21:12
Hallo,

Ich habe ein verschachteltes MySQL-Query in der Art:
SELECT ort FROM adressen WHERE name IN (SELECT vorname FROM namen WHERE id=23)
Dieser braucht 2.5 (!!) Sekunden zur Abarbeitung, während einzelne Queries nur etwas im 0.001xx Sekunden Bereich zur Ausführung benötigen. Woran liegt diese unterirdische Performance? Das PHP-Script wird gerade von Sybase auf MySQL portiert und unter Sybase war dieser verschachtelte Query kein Problem. Wie beschleunige ich das Ganze oder muss ich es in Einzelqueries aufsplitten?
Letzteres wäre ärgerlich, da das Script absolut nicht für diese Änderung ausgelegt ist.

Beste Grüße,
mf_2

Tommes
2007-09-17, 14:29:24
Indexe hast du sicher gesetzt, oder?

gr@fz@hL
2007-09-17, 14:45:31
Verschachtelte Select-Statements sind immer langsamer als beispielsweise ein join, den du mal ausprobieren solltest.

edit: Unsinn gelöscht.

darph
2007-09-17, 15:56:33
Wieso eigentlich "in"?

Da du eh nach id fragst, kannst du dir sicher sein, daß du nur eine Zeile bekommst. Da reicht auch "=". Ist es dann schneller?

mf_2
2007-09-17, 17:10:29
Mit dem "=" war es nicht schneller, ich habe es jetzt dann doch in zwei Teilqueries zerlegen müssen. JOIN sagt mir garnichts, werde ich mir aber mal ansehen. Danke für eure Tipps!! :)

Tommes
2007-09-17, 17:25:08
SELECT a.ort FROM adressen a LEFT JOIN namen n ON a.name = n.vorname
WHERE n.id = 23

Fast & dirty, in etwa so ;)