QUERY PLAN
Unique (cost=19053616924.80..19053616927.30 rows=200 width=16)
-> Sort (cost=19053616924.80..19053616925.30 rows=200 width=16)
Sort Key: (date(tt.dt)) DESC, (CASE WHEN (count(c.id) <> 0) THEN true ELSE false END), (CASE WHEN (count(tbl_schedules.id) <> 0) THEN true ELSE false END), (CASE WHEN (count(w.id) <> 0) THEN true ELSE false END)
-> HashAggregate (cost=19053616912.66..19053616917.16 rows=200 width=16)
Group Key: tt.dt
-> Nested Loop Left Join (cost=120.79..18469142969.31 rows=46757915468 width=20)
Join Filter: ((((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone >= w.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone <= w.end_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= w.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= w.start_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= w.end_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= w.end_at)))
-> Nested Loop Left Join (cost=20.25..12154677.35 rows=30324467 width=16)
Join Filter: ((((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone >= c.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone <= c.end_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= c.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= c.start_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= c.end_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= c.end_at)))
-> Nested Loop Left Join (cost=20.25..183966.57 rows=295287 width=12)
Join Filter: ((((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone >= CASE WHEN (tbl_schedules.start_at IS NULL) THEN CASE WHEN (tbl_schedules.end_at < now()) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE tbl_schedules.end_at END ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE now() END END ELSE tbl_schedules.start_at END) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone <= CASE WHEN (tbl_schedules.end_at IS NULL) THEN CASE WHEN (tbl_schedules.start_at > now()) THEN tbl_schedules.start_at ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END END ELSE CASE WHEN ((tbl_schedules.start_at IS NULL) AND (tbl_schedules.end_at < now())) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END ELSE tbl_schedules.end_at END END)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= CASE WHEN (tbl_schedules.start_at IS NULL) THEN CASE WHEN (tbl_schedules.end_at < now()) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE tbl_schedules.end_at END ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE now() END END ELSE tbl_schedules.start_at END) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= CASE WHEN (tbl_schedules.start_at IS NULL) THEN CASE WHEN (tbl_schedules.end_at < now()) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE tbl_schedules.end_at END ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.created_at ELSE now() END END ELSE tbl_schedules.start_at END)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= CASE WHEN (tbl_schedules.end_at IS NULL) THEN CASE WHEN (tbl_schedules.start_at > now()) THEN tbl_schedules.start_at ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END END ELSE CASE WHEN ((tbl_schedules.start_at IS NULL) AND (tbl_schedules.end_at < now())) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END ELSE tbl_schedules.end_at END END) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= CASE WHEN (tbl_schedules.end_at IS NULL) THEN CASE WHEN (tbl_schedules.start_at > now()) THEN tbl_schedules.start_at ELSE CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END END ELSE CASE WHEN ((tbl_schedules.start_at IS NULL) AND (tbl_schedules.end_at < now())) THEN CASE WHEN tbl_schedules.is_complete THEN tbl_schedules.complete_at ELSE now() END ELSE tbl_schedules.end_at END END)))
-> Function Scan on generate_series tt (cost=0.02..10.02 rows=1000 width=8)
-> Materialize (cost=20.24..439.03 rows=992 width=37)
-> Bitmap Heap Scan on tbl_schedules (cost=20.24..434.07 rows=992 width=37)
Recheck Cond: (created_by = 5300)
Filter: ((start_at IS NOT NULL) OR (end_at IS NOT NULL))
-> Bitmap Index Scan on tbl_schedules_created_by_idx (cost=0.00..19.99 rows=1027 width=0)
Index Cond: (created_by = 5300)
-> Materialize (cost=0.00..514.88 rows=345 width=20)
-> Seq Scan on tbl_calendars c (cost=0.00..513.15 rows=345 width=20)
Filter: ((start_at IS NOT NULL) AND (end_at IS NOT NULL) AND (created_by = 5300))
-> Materialize (cost=100.54..1465.37 rows=5180 width=24)
-> Bitmap Heap Scan on tbl_work_logs w (cost=100.54..1439.46 rows=5180 width=24)
Recheck Cond: (created_by = 5300)
Filter: ((start_at IS NOT NULL) AND (end_at IS NOT NULL) AND (NOT is_draft))
-> Bitmap Index Scan on tbl_work_logs_created_by_idx (cost=0.00..99.25 rows=5194 width=0)
Index Cond: (created_by = 5300)