Unique (cost=3968184.96..3969027.96 rows=112400 width=17) |
-> Sort (cost=3968184.96..3968465.96 rows=112400 width=17) |
Sort Key: (date(tt.dt)) DESC, (CASE WHEN ((count(cl.alarm_before) <> 0) OR (count(sh.alarm_before) <> 0)) THEN true ELSE false END) |
-> GroupAggregate (cost=3902956.43..3956449.07 rows=112400 width=17) |
Group Key: tt.dt, cl.id |
-> Sort (cost=3902956.43..3913261.56 rows=4122051 width=44) |
Sort Key: tt.dt, cl.id |
-> Nested Loop Left Join (cost=5.46..3196444.50 rows=4122051 width=44) |
Join Filter: ((((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone >= cl.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone <= cl.end_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= cl.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= cl.start_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= cl.end_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= cl.end_at))) |
Filter: (((cl.start_at - cl.alarm_before) > '2025-07-03 05:10:38+08'::timestamp with time zone) OR ((sh.start_at - sh.alarm_before) > '2025-07-03 05:10:38+08'::timestamp with time zone)) |
-> Nested Loop Left Join (cost=5.46..17817.30 rows=44353 width=32) |
Join Filter: ((((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone >= sh.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone <= sh.end_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= sh.start_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= sh.start_at)) OR (((((date(tt.dt))::text || ' 00:00:00'::text))::timestamp without time zone <= sh.end_at) AND ((((date(tt.dt))::text || ' 23:59:59'::text))::timestamp without time zone >= sh.end_at))) |
-> Function Scan on generate_series tt (cost=0.02..10.02 rows=1000 width=8) |
-> Materialize (cost=5.44..300.16 rows=149 width=32) |
-> Bitmap Heap Scan on tbl_schedules sh (cost=5.44..299.41 rows=149 width=32) |
Recheck Cond: (created_by = 1001) |
-> Bitmap Index Scan on tbl_schedules_created_by_idx (cost=0.00..5.40 rows=149 width=0) |
Index Cond: (created_by = 1001) |
-> Materialize (cost=0.00..514.38 rows=562 width=36) |
-> Seq Scan on tbl_calendars cl (cost=0.00..511.58 rows=562 width=36) |
Filter: (created_by = 1001) |