phpbar.de logo

Mailinglisten-Archive

Tabelle voll - was nun ...

Tabelle voll - was nun ...

Andreas M�ller mysql at universalware.de
Fre Jun 16 10:56:30 CEST 2006


Hallo Sebastian,
wie ich schon letztens ausgef�hrt habe kann MySQL keine Funktionsaufrufe
optimieren.

Daher w�re folgendes immer ein full table scan und daher extrem langsam.

> WHERE EXTRACT(YEAR_MONTH FROM `datum`) = 'yyyymm';
> WHERE DATE_FORMAT(`datum`, "%Y%m") = 'yyyymm';

Handelt es sich in dem Fall um ine DateTime Feld so f�hrt MySQL die Abfrage
zwar aus - es wird aber auch hier nichts optimiert und es wird ein full
table scan durchgef�hrt. Handelt es sich um ein varchar Feld dann gilt das
hier ein Index verwendet wird und sogar manchmal schneller ist als ein Range
�ber ein DateTime Feld.

> WHERE `datum` LIKE 'xxxx-xx-__';

Das, oder die normale schreibweise ohne BETWEEN ist die optimale Abfrage f�r
DateTime Felder:
> WHERE `datum` BETWEEN 'xxxx-xx-00' AND 'yyyy-yy-00';

WHERE `datum`>='xxxx-xx-00' AND `datum`<='yyyy-yy-00';

Gru�,
Andreas


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive