MySQL: Select * WHERE 1=1 und Performance

MasterGeo

Mitglied
Moin,

ich baue mir eine Where Bedignung dynamisch in einem Script zusammen. Manchmal gibt es mehrere Bediegnungen und manchmal gar keine. Da ich faul bin und nicht immer prüfen will ob es schon eine Bedingung gab und somit ein "AND" davor setzten will, kam ich auf die gloreiche Idee immer ein 1=1 als erstes in die WHERE Bedingung zu schreiben und alle folgenden immer mit einem AND zu beginnen. Nun meine Frage, verlangsamt mir das 1=1 die Abfrage? Ist MySQL so schlau und prüft das erst gar nicht?Bei meinen Test war kein brauchbarer Unterschied zu messen.

Danke
Georg
 
Hallo,

ohne jetzt genau auf mySQL einzugehen:

Wenn du mehrere AND-Bedingungen in deiner WHERE-Klausel hast, ist es so, dass ja alle abgeprüft werden müssen. Da du hier ja eine Bedingung angibst, die offensichtlich immer wahr ist, muss er soundso weitere Bedingungen prüfen, da die gesamte WHERE-Klausel ja immer noch zu FALSE evaluieren könnte.

Was die konstante Bedingung "WHERE 1=1" angeht, greift sie auf keine DB-Tabelle zu, also würde es im Zweifelsfall ein wenig Parsezeit kosten und ein wenig CPU beim Ausführen aufgrund der zusätzlichen Prüfung. Ich gehe aber davon aus, dass sie sich nicht gross bemerkbar machen wird, da MySQL sie vorher schon wegoptimiert.

Im Zweifelsfall machst du mal eine Messung mit sehr vielen Datensätzen und vergleichst das ganze.
 
Zurück