Mailinglisten-Archive |
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