QUERY PLAN
Sort (cost=3653.93..3653.95 rows=8 width=240)
Sort Key: progress."order"
-> GroupAggregate (cost=3653.19..3653.81 rows=8 width=240)
Group Key: progress.id
-> Merge Left Join (cost=3653.19..3653.61 rows=8 width=209)
Merge Cond: (progress.id = sub.project_progress)
-> Sort (cost=1.23..1.25 rows=8 width=168)
Sort Key: progress.id
-> Seq Scan on tbl_project_progresses progress (cost=0.00..1.11 rows=8 width=168)
Filter: (NOT is_delete)
-> Sort (cost=3651.96..3652.11 rows=59 width=45)
Sort Key: sub.project_progress
-> Subquery Scan on sub (cost=3649.49..3650.23 rows=59 width=45)
-> Sort (cost=3649.49..3649.64 rows=59 width=57)
Sort Key: p.bargain_date DESC, p.created_at DESC
-> Group (cost=3644.20..3647.75 rows=59 width=57)
Group Key: p.id
-> Sort (cost=3644.20..3645.83 rows=651 width=30)
Sort Key: p.id
-> Hash Left Join (cost=2227.04..3613.78 rows=651 width=30)
Hash Cond: (pa.engineer_id = egr.engineer_id)
-> Hash Left Join (cost=2225.43..3603.22 rows=651 width=34)
Hash Cond: (p.id = pa.project_id)
-> Hash Right Join (cost=2181.17..3551.15 rows=651 width=30)
Hash Cond: (ttr2.object_id = p.id)
-> Seq Scan on tbl_term_taxonomy_relationships ttr2 (cost=0.00..1308.03 rows=3642 width=4)
Filter: (term_id = 13)
-> Hash (cost=2173.03..2173.03 rows=651 width=30)
-> Merge Right Join (cost=1114.07..2173.03 rows=651 width=30)
Merge Cond: (sl.project_id = p.id)
-> Index Only Scan using tbl_work_logs_project_id_idx on tbl_work_logs sl (cost=0.29..6294.15 rows=35733 width=4)
-> Sort (cost=1113.78..1113.92 rows=58 width=30)
Sort Key: p.id
-> Nested Loop Left Join (cost=352.37..1112.08 rows=58 width=30)
-> Nested Loop Left Join (cost=352.08..672.77 rows=58 width=30)
-> Hash Left Join (cost=351.80..367.89 rows=58 width=30)
Hash Cond: (c.sales_rep = sgr.sales_id)
-> Hash Join (cost=349.65..365.22 rows=58 width=34)
Hash Cond: (p.client_id = c.id)
Join Filter: ((c.sales_rep IS NULL) OR (c.sales_rep = ANY ('{1001,5049,5500,5301,5499,5022,5209,5026,5293,5309,5356,5329,5299,5303,5302,5332,5047,1026,5096,5070,5448,5420,1029,5037,5087,1008,5048,5043,5045,5230,5031,5088,5208,1003,5467,5294,5357,5044,1030,5076,5300,5027,5089,5311,5066,5069,5364,1009,5295,1013,5128,5203,1025,5032,5075,5476,1004,5072,5033,5359,5412,5409,5229,1005,5304,5449,5358,1006,5093}'::integer[])) OR (prr.user_id = 1001) OR (hashed SubPlan 1))
-> Hash Right Join (cost=207.40..222.82 rows=59 width=38)
Hash Cond: (prr.project_id = p.id)
-> Seq Scan on tbl_project_remind_receivers prr (cost=0.00..13.25 rows=825 width=8)
-> Hash (cost=206.66..206.66 rows=59 width=38)
-> Seq Scan on tbl_projects p (cost=0.00..206.66 rows=59 width=38)
Filter: ((project_progress IS NOT NULL) AND (bargain_date >= '2026-01-01'::date) AND (bargain_date < '2026-12-31 00:00:01'::timestamp without time zone) AND (project_status = ANY ('{1,2,3}'::integer[])))
-> Hash (cost=108.98..108.98 rows=1998 width=8)
-> Seq Scan on tbl_clients c (cost=0.00..108.98 rows=1998 width=8)
Filter: ((NOT deleted) AND (id IS NOT NULL))
SubPlan 1
-> Index Only Scan using tbl_user_visit_clients_user_client_idx on tbl_user_visit_clients (cost=0.28..8.29 rows=1 width=4)
Index Cond: (user_id = 1001)
-> Hash (cost=1.51..1.51 rows=51 width=4)
-> Seq Scan on tbl_sales_group_relationships sgr (cost=0.00..1.51 rows=51 width=4)
-> Index Only Scan using tbl_work_logs_arrive_project_end_at_idx on tbl_work_logs arrive (cost=0.28..5.25 rows=1 width=4)
Index Cond: (project_id = p.id)
-> Index Only Scan using tbl_term_taxonomy_relationships_object_id_term_id_idx on tbl_term_taxonomy_relationships ttr (cost=0.29..7.56 rows=1 width=4)
Index Cond: ((object_id = p.id) AND (term_id = 10))
-> Hash (cost=26.34..26.34 rows=1434 width=8)
-> Seq Scan on tbl_project_architects pa (cost=0.00..26.34 rows=1434 width=8)
-> Hash (cost=1.27..1.27 rows=27 width=4)
-> Seq Scan on tbl_engineer_group_relationships egr (cost=0.00..1.27 rows=27 width=4)