Autor Zpráva
Kcko
Profil
Potrebuji vybrat celkovy pocet zapasu za dnesni den =>

SELECT COUNT(1)
FROM `vysledky`
WHERE DATE(datum) = CURDATE()



Dotaz trva nejak dlouho, podivam se na explain ( trval temer 1 vterinu a projel 22 tisic radku - hm v databazi mam 22 tisic zapasu )
Index na sloupci datum samozrejme mam.

Pri pouziti se neaplikuje pravdepodobne

Zatim jsem vyresil problem takto

 EXPLAIN SELECT *
FROM `vysledky`
WHERE datum >=20080606 


To uz vyhazuje prochazeni cca 200 zapasu

Nevi nekdo proc se index nepouzije, ci zna lepsi reseni? Nekdy se uplne divim co Mysql (ne)umi

Taky by mne zajimalo proc u druheho zmineneneho prikladu nemuzu pouzit jen
 datum = 20080606  

Jinak se nenajde zadny zapas , znamenko vetsi je tam holt treba, nechapu

Sloupec datum je datoveho typu DATETIME
Kajman_
Profil *
Index máš na datum ne na date(datum), proto se nemůže použít v první případě. Nevím, jestli už mysql umí dělat indexy na výrazy.. např. DATE(datum), tak bych zkusil

where datum between '2008-06-06' and '2008-06-06 23:59:59'
Kcko
Profil
datum between '2008-06-06' and '2008-06-06 23:59:59'

Jasne to funguje. Diky za vysvetleni s indexem, budu muset pozmenit cast dotazu na webu.

Jeste bych potreboval znati odpoved na

>> Taky by mne zajimalo proc u druheho zmineneneho prikladu nemuzu pouzit jen

datum = 20080606

Dik Petre
Kajman_
Profil *
Číslo 20080606 se převede automaticky na formát datetime... tedy '2008-06-06 00:00:00' a např. '2008-06-06 00:00:01' tedy už nevyhovuje.
Kcko
Profil
Aha taky mi to docvaklo po tom nejapnem dotazu.
Thx budu si pamatovat
Toto téma je uzamčeno. Odpověď nelze zaslat.

0