MySQL optimalizácia vyhľadávania DATETIME hodnôt

mysql search datetime

Riešil som problém s dlhotrvajúcim selectom nad stĺpcom v tabuľke MySQL databázy, ktorý bol typu DATETIME. Stĺpec som mal naindexovaný, ale aj tak vyhľadávanie nad ním trvalo niekoľko sekúnd (v tabuľke sa nachádza asi 1,5 milióna záznamov).

Select, ktorý som vykonával vyzeral približne takto:

1
SELECT * FROM tabulka WHERE DATE(datetime_stlpec)='2013-10-11';

Po chvíľke „gúglenia“ som prišiel na to, že v takomto prípade sa nad daným stĺpcom vôbec nepoužíva index, takže aby MySQL zobrazilo výsledok muselo prejsť celú tabuľku riadok za riadkom.

Po úprave selectu na:

1
SELECT * FROM tabulka WHERE datetime_stlpec BETWEEN '2013-10-11 00:00:00' AND '2013-10-11 23:59:59';

bol výsledok dostupný behom niekoľko milisekúnd. MySQL teda pri hľadaní použilo index nadefinovaný nad týmto stĺpcom.

Pridajte Komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *

Návrat hore