QUERY PLAN
Aggregate (cost=2685.49..2685.50 rows=1 width=32)
-> Hash Semi Join (cost=2640.17..2685.48 rows=1 width=6)
Hash Cond: (tbl_sales_contract_invoices.contract_id = tbl_sales_contracts.id)
-> Seq Scan on tbl_sales_contract_invoices (cost=0.00..40.25 rows=1925 width=10)
-> Hash (cost=2640.16..2640.16 rows=1 width=8)
-> Nested Loop (cost=2632.11..2640.16 rows=1 width=8)
-> Sort (cost=2631.84..2631.84 rows=1 width=16)
Sort Key: c.signed_at DESC, c.created_at DESC
-> Group (cost=2631.82..2631.83 rows=1 width=16)
Group Key: c.id
-> Sort (cost=2631.82..2631.82 rows=1 width=16)
Sort Key: c.id
-> Hash Left Join (cost=1926.62..2631.81 rows=1 width=16)
Hash Cond: (c.project_id = project.id)
Filter: (((c.serial_no)::text ~~* '%2025年虚拟化平台硬件续保项目%'::text) OR (c.description ~~* '%2025年虚拟化平台硬件续保项目%'::text) OR ((client.name)::text ~~* '%2025年虚拟化平台硬件续保项目%'::text) OR ((client.en_name)::text ~~* '%2025年虚拟化平台硬件续保项目%'::text) OR (client.pinyin_shortcut ~~* '%2025年虚拟化平台硬件续保项目%'::text) OR ((project.project_title)::text ~~* '%2025年虚拟化平台硬件续保项目%'::text) OR (project.pinyin_shortcut ~~* '%2025年虚拟化平台硬件续保项目%'::text))
-> Hash Left Join (cost=1715.88..2416.68 rows=1663 width=113)
Hash Cond: (client.sales_rep = sgr.sales_id)
-> Hash Right Join (cost=1713.78..2401.23 rows=1663 width=117)
Hash Cond: (cs.object_id = c.id)
-> Seq Scan on tbl_attachement_relationships cs (cost=0.00..678.01 rows=1685 width=4)
Filter: (object_type = 105)
-> Hash (cost=1692.99..1692.99 rows=1663 width=117)
-> Hash Right Join (cost=1008.45..1692.99 rows=1663 width=117)
Hash Cond: (rs.object_id = c.id)
-> Seq Scan on tbl_attachement_relationships rs (cost=0.00..678.01 rows=1164 width=4)
Filter: (object_type = 106)
-> Hash (cost=987.67..987.67 rows=1663 width=117)
-> Hash Right Join (cost=309.41..987.67 rows=1663 width=117)
Hash Cond: (vs.object_id = c.id)
-> Seq Scan on tbl_attachement_relationships vs (cost=0.00..678.01 rows=44 width=4)
Filter: (object_type = 107)
-> Hash (cost=288.62..288.62 rows=1663 width=117)
-> Hash Left Join (cost=238.24..288.62 rows=1663 width=117)
Hash Cond: (c.client_id = client.id)
Filter: ((client.sales_rep = ANY ('{1001,5049,5301,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,5294,5357,5044,1030,5076,5300,5027,5089,5311,5066,5069,5364,1009,5295,1013,5128,5203,1025,5032,5075,1004,5072,5033,5359,5409,5412,5229,1005,5304,5449,5358,1006,5093}'::integer[])) OR (client.sales_rep IS NULL) OR (hashed SubPlan 1))
-> Hash Right Join (cost=84.51..129.82 rows=1894 width=60)
Hash Cond: (sci2.contract_id = c.id)
-> Seq Scan on tbl_sales_contract_invoices sci2 (cost=0.00..40.25 rows=1925 width=4)
-> Hash (cost=64.37..64.37 rows=1611 width=64)
-> Seq Scan on tbl_sales_contracts c (cost=0.00..64.37 rows=1611 width=64)
Filter: (from_project IS NOT NULL)
-> Hash (cost=119.58..119.58 rows=1958 width=65)
-> Seq Scan on tbl_clients client (cost=0.00..119.58 rows=1958 width=65)
SubPlan 1
-> Seq Scan on tbl_user_visit_clients (cost=0.00..9.68 rows=1 width=4)
Filter: (user_id = 1001)
-> Hash (cost=1.49..1.49 rows=49 width=4)
-> Seq Scan on tbl_sales_group_relationships sgr (cost=0.00..1.49 rows=49 width=4)
-> Hash (cost=172.55..172.55 rows=3055 width=35)
-> Seq Scan on tbl_projects project (cost=0.00..172.55 rows=3055 width=35)
-> Index Scan using tbl_sales_contracts_pkey on tbl_sales_contracts (cost=0.28..8.29 rows=1 width=4)
Index Cond: (id = c.id)
Filter: including_tax