Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [Mysql] Rekordy z dnia poprzedniego a sprawa indeksow

Hej,
Nie wiem czy cos takiego idzie w ogole zrobic ale moze ktos ma pomysl:

Mam tabelke

mysql> select * from test.daty;
+----+---------------------+
| id | data |
+----+---------------------+
| 1 | 2012-09-18 13:24:35 |
| 2 | 2012-09-17 13:24:35 |
| 3 | 2012-09-19 13:24:35 |
+----+---------------------+

index na kolumnie data

Chcialbym teraz wylistowac wszystkie rekordy z poprzedniego dnia

select * from test.daty where data=subdate(current_date,1);
Empty set (0.00 sec)

mysql> select * from test.daty where DATE_FORMAT(data,'%Y-%m-%d')=subdate(current_date,1);
+----+---------------------+
| id | data |
+----+---------------------+
| 1 | 2012-09-18 13:24:35 |
+----+---------------------+
1 row in set (0.00 sec)


i wszystko fajnie, tylko ze przy takim zapisie nie beda uzyte indeksy na kolumnie data

Istnieje moze jakis sposob (poza indeksowaniem DATE_FORMAT(data,'%Y-%m-%d')) na to aby zapytanie uzylo indeksu ?
Ewentualnie inna metoda na wylistowanie ?
Paweł Grzegorz Kwiatkowski

Paweł Grzegorz Kwiatkowski Architekt
oprogramowania,
Ericsson

Temat: [Mysql] Rekordy z dnia poprzedniego a sprawa indeksow

Może range query: ... where data>x and data<x+1 .. ?

Albo dodatkowa kolumna trzymająca tylko YYYYMMDD + indeks ?
Krzysztof Białkowski

Krzysztof Białkowski Software Developer
(C# .NET)

Temat: [Mysql] Rekordy z dnia poprzedniego a sprawa indeksow

Paweł Grzegorz Kwiatkowski:
Może range query: ... where data>x and data<x+1 .. ?
o no spoko
cos takie mysle ze zalatwi sprawe , musze jeszcze dokladnie zobaczyc jak bedzie z wydajnoscia


select * from daty where data between subdate(current_date,1) and current_date


thxKrzysztof Białkowski edytował(a) ten post dnia 20.09.12 o godzinie 10:36



Wyślij zaproszenie do