![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 3.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam dosc spora tabele ktora trzyma staty odwiedzin (kilka milionow rekordow) chce dostac ilosc unikalnych odwiedzin na stronie nr "3" od poczatku lutego:
indexy btree sa na klikniete_data oraz na strona_id niby proste zapytanie ale bardzo dlugo mieli i zamula caly serwer. explain daje cod takiego: Kod Limit (cost=128878.77..128878.78 rows=1 width=17)
-> Aggregate (cost=128878.77..128878.78 rows=1 width=17) -> Bitmap Heap Scan on staty (cost=224.93..128846.64 rows=12850 width=17) Recheck Cond: (strona_id = 3) Filter: ((date_trunc('month'::text, klikniete_data))::text > '3'::text) -> Bitmap Index Scan on strona_id_idx (cost=0.00..224.93 rows=38551 width=0) Index Cond: (strona_id = 3) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 18.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
witam
hmm... a czy przypadkiem date_trunc nie daje ci innego wyniku (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Cytat Examples: SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40'); Result: 2001-02-16 20:00:00 SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40'); Result: 2001-01-01 00:00:00 więc wg mnie zapytanie powinno wyglądać raczej tak (przy typie TIMESTAMP dla pola klikniete_data): Cytat("SQL") select count(distinct(ip)) from staty where date_trunc('month', klikniete_data) >= '2007-02-01 00:00:00' and strona_id = 3 ; Ewentualnie przy takiej ilości danych sugeruję utworzyć dodatkową tabelę w której będą odpowiednio już przetworzone (statystyki miesięczne, roczne itp). Czasochłonną operację wykonasz raz (np. za m-c luty 2007 - przy takiej ilości danych to rozwiązanie będzie efektywniejsze), i później możesz z wyników korzystać do woli (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) Oczywiście strukturę tabel wynikowych musisz przemyśleć w zależności od tego jakiego rodzaju wyniki Cię interesują (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) pozdrawiam Ten post edytował wojtekmki 18.04.2007, 14:16:24 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 13:00 |