Mailinglisten-Archive |
Hallo Sebastian, > du meinst MySQL macht einen Unterschied ob es die Daten aus dem Index > verwendet oder die Daten aus einem Full-Table-Scan zieht daran fest ob > eine Funktion über die Daten läuft oder nicht? Warum? Die Daten sind > doch die selben! MySQL und so gut wie jedes andere RDBMS kann Funktionsaufrufe nicht dahingehend optimieren das es einen Index zu unterstützung nehmen kann. Eine Funktion ist hier wirklich aus Sicht des Optimizers als Blackbox zu sehen: y=f(x) Daher weiss der Optimizer nicht ob und welcher Index sinnvoll wäre und verwendet einfach mal keinen. Die größen Kosten entstehen in dem Beispiel von Norbert aber durch die Methodenaufrufe die unnötig sind. LIKE und BETWEEN sind keine Funktion sondern Operatoren die der Optimizer daher gut optimieren kann. > 'nichts' ist etwas übertrieben, immerhin ist es nur Einer anstelle von > zwei Funktionsaufrufen ... ;-) Naja dafür findet dann ein String Vergleich statt der teurer ist als Integer vergleiche. Hier müsste man Vergleichsmessungen machen was wirklich schneller ist. Gruß, Andreas -- Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive