QUERY PLAN
Aggregate (cost=2041.21..2041.22 rows=1 width=8)
-> Sort (cost=2041.08..2041.10 rows=9 width=65)
Sort Key: w.start_at
-> Subquery Scan on w (cost=0.00..2040.94 rows=9 width=65)
-> Append (cost=0.00..2040.85 rows=9 width=65)
-> Result (cost=0.00..0.00 rows=0 width=307)
One-Time Filter: false
-> Result (cost=117.05..2040.85 rows=8 width=65)
-> Append (cost=117.05..2040.77 rows=8 width=65)
-> Result (cost=117.05..737.10 rows=1 width=110)
One-Time Filter: false
-> Bitmap Heap Scan on tbl_schedules (cost=117.05..737.10 rows=1 width=110)
Recheck Cond: ((created_by = ANY ('{1004,1001,5087,1015,1023,5064,5440,5360,1022,5311,5248,1000,5420,5445,5388,5404,5252,1013,5300,5250,5296,1005,1005,1017,5085,5332,1011,5329,5016,5295}'::integer[])) AND (created_by = 1005))
Filter: (((CASE WHEN (start_at IS NULL) THEN CASE WHEN (end_at < now()) THEN CASE WHEN is_complete THEN created_at ELSE end_at END ELSE CASE WHEN is_complete THEN created_at ELSE now() END END ELSE start_at END >= '2025-07-05 00:00:00+08'::timestamp with time zone) AND (CASE WHEN (end_at IS NULL) THEN CASE WHEN (start_at > now()) THEN start_at ELSE CASE WHEN is_complete THEN complete_at ELSE now() END END ELSE CASE WHEN ((start_at IS NULL) AND (end_at < now())) THEN CASE WHEN is_complete THEN complete_at ELSE now() END ELSE end_at END END < '2025-07-05 23:59:59+08'::timestamp with time zone)) OR ((CASE WHEN (start_at IS NULL) THEN CASE WHEN (end_at < now()) THEN CASE WHEN is_complete THEN created_at ELSE end_at END ELSE CASE WHEN is_complete THEN created_at ELSE now() END END ELSE start_at END <= '2025-07-05 00:00:00+08'::timestamp with time zone) AND (CASE WHEN (end_at IS NULL) THEN CASE WHEN (start_at > now()) THEN start_at ELSE CASE WHEN is_complete THEN complete_at ELSE now() END END ELSE CASE WHEN ((start_at IS NULL) AND (end_at < now())) THEN CASE WHEN is_complete THEN complete_at ELSE now() END ELSE end_at END END > '2025-07-05 00:00:00+08'::timestamp with time zone)) OR ((CASE WHEN (start_at IS NULL) THEN CASE WHEN (end_at < now()) THEN CASE WHEN is_complete THEN created_at ELSE end_at END ELSE CASE WHEN is_complete THEN created_at ELSE now() END END ELSE start_at END <= '2025-07-05 23:59:59+08'::timestamp with time zone) AND (CASE WHEN (end_at IS NULL) THEN CASE WHEN (start_at > now()) THEN start_at ELSE CASE WHEN is_complete THEN complete_at ELSE now() END END ELSE CASE WHEN ((start_at IS NULL) AND (end_at < now())) THEN CASE WHEN is_complete THEN complete_at ELSE now() END ELSE end_at END END > '2025-07-05 23:59:59+08'::timestamp with time zone)))
-> Bitmap Index Scan on tbl_schedules_created_by_idx (cost=0.00..117.05 rows=1653 width=0)
Index Cond: ((created_by = ANY ('{1004,1001,5087,1015,1023,5064,5440,5360,1022,5311,5248,1000,5420,5445,5388,5404,5252,1013,5300,5250,5296,1005,1005,1017,5085,5332,1011,5329,5016,5295}'::integer[])) AND (created_by = 1005))
-> Subquery Scan on "*SELECT* 3" (cost=0.00..1303.66 rows=7 width=65)
-> Seq Scan on tbl_calendars c (cost=0.00..1303.59 rows=7 width=78)
Filter: ((start_at IS NOT NULL) AND (end_at IS NOT NULL) AND (created_by = 1005) AND (((start_at >= '2025-07-05 00:00:00+08'::timestamp with time zone) AND (end_at < '2025-07-05 23:59:59+08'::timestamp with time zone)) OR ((start_at <= '2025-07-05 00:00:00+08'::timestamp with time zone) AND (end_at > '2025-07-05 00:00:00+08'::timestamp with time zone)) OR ((start_at <= '2025-07-05 23:59:59+08'::timestamp with time zone) AND (end_at > '2025-07-05 23:59:59+08'::timestamp with time zone))) AND (created_by = ANY ('{1004,1001,5087,1015,1023,5064,5440,5360,1022,5311,5248,1000,5420,5445,5388,5404,5252,1013,5300,5250,5296,1005,1005,1017,5085,5332,1011,5329,5016,5295}'::integer[])))