Hallo,
ich versuche ein paar sql-statements zu optimieren.
dabei ist mir aufgefallen, dass subselects doch _extrem_ langsam sind.
ich habe mal 2 statements erstellt und die das selbe ergebnis zurückliefern.
In der Art wie:
und
das Ergebnis ist echt verblüffend (detailTabelle: 150000 Datensätze, UserTabelle: 86000 datensätze):
Die erste Abfrage (Subselect) benötigt stolze 2,5 sek,
die 2. Abfrage mit der "temporären" tabelle + join nur 0,001 sekunden.
Kann jemand erklären wieso der unterschied soo riesig ist.
Gibt es evtl. noch paar tipps wie man statements optimieren kann (sowas wie "keine Subselects"
) ?
ich versuche ein paar sql-statements zu optimieren.
dabei ist mir aufgefallen, dass subselects doch _extrem_ langsam sind.
ich habe mal 2 statements erstellt und die das selbe ergebnis zurückliefern.
In der Art wie:
Code:
Select b.* from details b where ref_id in ( select id from users where user_id = 12345 )
Code:
Select b.* from ( select id from users where user_id = 12345 ) tempTable inner join details b on b.ref_id=tempTable.id
Die erste Abfrage (Subselect) benötigt stolze 2,5 sek,
die 2. Abfrage mit der "temporären" tabelle + join nur 0,001 sekunden.
Kann jemand erklären wieso der unterschied soo riesig ist.
Gibt es evtl. noch paar tipps wie man statements optimieren kann (sowas wie "keine Subselects"

Kommentar