| Unique (cost=43871.82..43916.82 rows=6000 width=17) |
| -> Sort (cost=43871.82..43886.82 rows=6000 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) |
| -> HashAggregate (cost=43390.30..43495.30 rows=6000 width=17) |
| Group Key: tt.dt, cl.id |
| -> Nested Loop Left Join (cost=4.57..42888.20 rows=50210 width=44) |
| 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))) |
| Filter: (((cl.start_at - cl.alarm_before) > '2025-12-17 05:15:18+08'::timestamp with time zone) OR ((sh.start_at - sh.alarm_before) > '2025-12-17 05:15:18+08'::timestamp with time zone)) |
| -> Nested Loop Left Join (cost=0.02..4067.82 rows=8930 width=36) |
| 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))) |
| -> Function Scan on generate_series tt (cost=0.02..10.02 rows=1000 width=8) |
| -> Materialize (cost=0.00..532.88 rows=30 width=36) |
| -> Seq Scan on tbl_calendars cl (cost=0.00..532.73 rows=30 width=36) |
| Filter: (created_by = 5064) |
| -> Materialize (cost=4.55..108.92 rows=34 width=32) |
| -> Bitmap Heap Scan on tbl_schedules sh (cost=4.55..108.75 rows=34 width=32) |
| Recheck Cond: (created_by = 5064) |
| -> Bitmap Index Scan on tbl_schedules_created_by_idx (cost=0.00..4.54 rows=34 width=0) |
| Index Cond: (created_by = 5064) |