Tach auch,
mal ne Frage zur Effizienz einer SELECT-Abfrage in MySQL (aus PHP, aber das sollte eigentlich egal sein):
Abhängig von den selektierten Options von einem HTML-Select-Tag (mit multiple-Eigenschaft) sollen die Datensätze aus der Datenbank geholt werden, deren Spalte x mit einem der Werte (lauter Zahlen) aus den gewählten Options übereinstimmt.
In der überwiegenden Zahl der Fälle wird vermutlich nur eine einzige Option ausgewählt werden.
Die gewählten Werte hab ich ja als Array, bisher generiere ich damit einfach die WHERE-Bedingung:
$sql .= ' AND col IN ('.implode(",", $POST['myselect']).') ';
Das wird an sowieso vorhandene Bedingungen einfach noch hintendran gehängt.
Im Normalfall (nur eine Option selektiert) ergibt sich damit also
' AND col IN (17)'
Effektiv ist das - es werden nur die gewünschten Datensätze ausgewählt.
Jetzt frage ich mich, ob es nicht effizienter wäre, bei nur einer selektierten Option den Code
' AND col = 17'
generieren zu lassen.
Vielleicht auch noch bei zwei ausgewählten Werten
' AND ((col = 17) OR (col = 42))'
statt ' AND col IN (17,42)'
Kann mir jemand sagen, ob das einen Effizienzgewinn bringt? Oder ist der so gering, daß er durch den (minimal) aufwendigeren PHP-Code wieder aufgefressen?
Muchachos Garcia!
Peter B.