1EXPLAIN ANALYZE SELECT
2 project_id,
3 date_trunc('day', created_at) as interval_start,
4 count(DISTINCT ip_address) as unique_visitors
5FROM analytics_visits
6WHERE user_id='2c182b8f-ad65-4543-8ac9-2c47bb20172d' AND created_at >= '2024-10-01' AND status <> 404
7GROUP BY post_id, project_id, interval_start;
8
9 QUERY PLAN
10-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
11 GroupAggregate (cost=97609.43..106340.14 rows=62826 width=48) (actual time=2070.275..2345.613 rows=1767 loops=1)
12 Group Key: post_id, project_id, (date_trunc('day'::text, created_at))
13 -> Gather Merge (cost=97609.43..104926.56 rows=62826 width=105) (actual time=2070.160..2219.845 rows=60055 loops=1)
14 Workers Planned: 2
15 Workers Launched: 2
16 -> Sort (cost=96609.41..96674.85 rows=26178 width=105) (actual time=1838.860..1845.864 rows=20018 loops=3)
17 Sort Key: post_id, project_id, (date_trunc('day'::text, created_at))
18 Sort Method: quicksort Memory: 3539kB
19 Worker 0: Sort Method: quicksort Memory: 3455kB
20 Worker 1: Sort Method: quicksort Memory: 3208kB
21 -> Parallel Seq Scan on analytics_visits (cost=0.00..94688.46 rows=26178 width=105) (actual time=345.497..1762.156 rows=20018 loops=3)
22 Filter: ((created_at >= '2024-10-01 00:00:00'::timestamp without time zone) AND (status <> 404) AND (user_id = '2c182b8f-ad65-4543-8ac9-2c47bb20172d'::uuid))
23 Rows Removed by Filter: 785366
24 Planning Time: 0.540 ms
25 JIT:
26 Functions: 15
27 Options: Inlining false, Optimization false, Expressions true, Deforming true
28 Timing: Generation 20.496 ms, Inlining 0.000 ms, Optimization 14.859 ms, Emission 419.851 ms, Total 455.205 ms
29 Execution Time: 3002.404 ms
30(19 rows)