QUERY PLAN
Limit (cost=123.23..123.24 rows=1 width=165)
-> Sort (cost=123.23..123.24 rows=1 width=165)
Sort Key: b.bill_date DESC, b.object_type, b.object_id DESC, b.event_type, b.event_id DESC
-> Hash Left Join (cost=19.79..123.22 rows=1 width=165)
Hash Cond: ((b.object_type = g.object_type) AND (b.object_id = g.object_id) AND (b.event_type = g.event_type) AND (b.event_id = g.event_id))
Filter: ((g.success_count IS NULL) OR (g.success_count = 0))
-> Subquery Scan on b (cost=14.52..117.91 rows=4 width=117)
Filter: ((b.object_type <> ALL ('{20,20018}'::integer[])) OR b.have_invoice OR (SubPlan 1))
-> GroupAggregate (cost=14.52..14.70 rows=5 width=125)
Group Key: t.id, e.id
-> Sort (cost=14.52..14.54 rows=5 width=79)
Sort Key: t.id, e.id
-> Hash Right Join (cost=6.44..14.47 rows=5 width=79)
Hash Cond: (u.id = h.user_id)
-> Seq Scan on tbl_users u (cost=0.00..7.44 rows=144 width=8)
-> Hash (cost=6.37..6.37 rows=5 width=75)
-> Hash Right Join (cost=5.17..6.37 rows=5 width=75)
Hash Cond: (h.erp_other_income_ticket_id = t.id)
-> Seq Scan on tbl_erp_other_income_ticket_handlers h (cost=0.00..1.14 rows=14 width=8)
-> Hash (cost=5.11..5.11 rows=5 width=71)
-> Hash Join (cost=3.56..5.11 rows=5 width=71)
Hash Cond: (e.erp_other_income_ticket_id = t.id)
-> Seq Scan on tbl_erp_other_income_ticket_bank_ins e (cost=0.00..1.46 rows=31 width=26)
Filter: ((settle_at IS NOT NULL) AND (amount > '0'::numeric) AND (amount > '0'::numeric))
-> Hash (cost=3.40..3.40 rows=13 width=49)
-> Seq Scan on tbl_erp_other_income_tickets t (cost=0.00..3.40 rows=13 width=49)
Filter: ((verify_at IS NOT NULL) AND (verify_at >= '2026-02-01 00:00:00+08'::timestamp with time zone) AND (verify_at <= '2026-07-31 23:59:59+08'::timestamp with time zone) AND (status = 2))
SubPlan 1
-> Nested Loop (cost=0.29..20.63 rows=1 width=0)
Join Filter: (r.taxonomy_id = tt.id)
-> Index Scan using tbl_term_taxonomy_relationships_object_id_term_id_idx on tbl_term_taxonomy_relationships r (cost=0.29..11.58 rows=1 width=4)
Index Cond: ((object_id = b.object_id) AND (term_id = 18))
Filter: (((b.object_type = 20) AND (object_type = 7)) OR ((b.object_type = 20018) AND (object_type = 11)))
-> Seq Scan on tbl_term_taxonomies tt (cost=0.00..8.99 rows=5 width=4)
Filter: ((serial_no)::text = ANY ('{221106,640301,640302,640303,600704}'::text[]))
-> Hash (cost=4.75..4.75 rows=26 width=36)
-> Subquery Scan on g (cost=4.16..4.75 rows=26 width=36)
-> HashAggregate (cost=4.16..4.49 rows=26 width=36)
Group Key: v.object_type, v.object_id, COALESCE((v.event_type)::integer, 0), COALESCE(v.event_id, 0)
-> Seq Scan on tbl_voucher_gen_items v (cost=0.00..2.81 rows=54 width=22)
Filter: (ledger_id = 1)