mam dosc spora tabele ktora trzyma staty odwiedzin (kilka milionow rekordow)
chce dostac ilosc unikalnych odwiedzin na stronie nr "3" od poczatku lutego:
SELECT count(DISTINCT(ip)) FROM staty WHERE date_trunc('month', klikniete_data) >1 AND strona_id = 3 ;
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)
-> 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)