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