phpbar.de logo

Mailinglisten-Archive

Tabelle voll - was nun ...

Tabelle voll - was nun ...

Andreas Müller mysql at universalware.de
Fre Jun 16 12:10:44 CEST 2006


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