explain.depesz.com

PostgreSQL's explain analyze made readable

Result: YPJ9

Settings
# exclusive inclusive rows x rows loops node
1. 0.046 2,615,216.141 ↑ 1.0 25 1

Limit (cost=10.94..498,893.28 rows=25 width=185) (actual time=2,614,266.493..2,615,216.141 rows=25 loops=1)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, (func_format_refund_customer_names(ap.payee_name, false)), ap.payment_number, apt.name, ba.account_name, ah.id, ah.post_month, (CASE WHEN ah.is_initial_import THEN 1 ELSE 0 END), apl.vendor_code, (CASE WHEN (1 < (count(DISTINCT ad_1.property_id))) THEN 'Multiple'::text ELSE (max((lp.property_name)::text)) END), (CASE WHEN (ap.ap_payment_type_id = ANY ('{8,9}'::integer[])) THEN CASE WHEN ((gd.gl_reconciliation_id IS NOT NULL) AND (gr.gl_reconciliation_status_type_id = 3)) THEN 'Cleared'::text WHEN ((gd.gl_reconciliation_id IS NOT NULL) AND (gr.gl_reconciliation_status_type_id = 1)) THEN 'Reconciled'::text WHEN (ap.payment_status_type_id = 1) THEN 'Pending'::text WHEN (ap.payment_status_type_id = 2) THEN 'Received [Unreconciled]'::text WHEN
  • Buffers: shared hit=908089 read=6014, local hit=9151
2. 46.761 2,615,216.095 ↑ 7,316.0 25 1

Nested Loop (cost=10.94..3,649,823,222.03 rows=182,900 width=185) (actual time=2,614,266.492..2,615,216.095 rows=25 loops=1)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, func_format_refund_customer_names(ap.payee_name, false), ap.payment_number, apt.name, ba.account_name, ah.id, ah.post_month, CASE WHEN ah.is_initial_import THEN 1 ELSE 0 END, apl.vendor_code, CASE WHEN (1 < (count(DISTINCT ad_1.property_id))) THEN 'Multiple'::text ELSE (max((lp.property_name)::text)) END, CASE WHEN (ap.ap_payment_type_id = ANY ('{8,9}'::integer[])) THEN CASE WHEN ((gd.gl_reconciliation_id IS NOT NULL) AND (gr.gl_reconciliation_status_type_id = 3)) THEN 'Cleared'::text WHEN ((gd.gl_reconciliation_id IS NOT NULL) AND (gr.gl_reconciliation_status_type_id = 1)) THEN 'Reconciled'::text WHEN (ap.payment_status_type_id = 1) THEN 'Pending'::text WHEN (ap.payment_status_type_id = 2) THEN 'Received [Unreconciled]'::text WHEN
  • Inner Unique: true
  • Join Filter: (ap.ap_payment_type_id = apt.id)
  • Rows Removed by Join Filter: 25
  • Buffers: shared hit=908089 read=6014, local hit=9151
3. 0.140 2,615,169.284 ↑ 7,316.0 25 1

Nested Loop (cost=10.94..3,649,687,019.92 rows=182,900 width=142) (actual time=2,614,222.849..2,615,169.284 rows=25 loops=1)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, ap.payee_name, ap.payment_number, ah.id, ah.post_month, ah.is_initial_import, ba.account_name, gd.gl_reconciliation_id, gr.gl_reconciliation_status_type_id, (count(DISTINCT ad_1.property_id)), (max((lp.property_name)::text)), apl.vendor_code
  • Inner Unique: true
  • Buffers: shared hit=906873 read=6014, local hit=9151
4. 6.330 2,615,168.769 ↑ 7,316.0 25 1

Nested Loop (cost=10.52..3,649,601,688.80 rows=182,900 width=143) (actual time=2,614,222.783..2,615,168.769 rows=25 loops=1)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, ap.payee_name, ap.payment_number, ah.id, ah.post_month, ah.is_initial_import, ah.cid, ah.ap_payee_location_id, ba.account_name, gd.gl_reconciliation_id, gr.gl_reconciliation_status_type_id, (count(DISTINCT ad_1.property_id)), (max((lp.property_name)::text))
  • Buffers: shared hit=906772 read=6014, local hit=9151
5. 11.333 2,614,977.072 ↑ 89.8 2,037 1

Nested Loop Left Join (cost=3.11..3,646,383,196.14 rows=182,900 width=107) (actual time=899,583.536..2,614,977.072 rows=2,037 loops=1)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, ap.payee_name, ap.payment_number, ah.id, ah.post_month, ah.is_initial_import, ah.cid, ah.gl_transaction_type_id, ah.ap_payee_location_id, ba.account_name, gd.gl_reconciliation_id, gr.gl_reconciliation_status_type_id
  • Buffers: shared hit=898443 read=6014, local hit=5077
6. 135.649 2,612,808.556 ↑ 89.8 2,037 1

Nested Loop (cost=0.84..3,640,254,196.57 rows=182,900 width=103) (actual time=899,580.476..2,612,808.556 rows=2,037 loops=1)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, ap.payee_name, ap.payment_number, ah.id, ah.post_month, ah.is_initial_import, ah.cid, ah.gl_transaction_type_id, ah.ap_payee_location_id, ba.account_name, ba.reimbursed_property_id
  • Inner Unique: true
  • Join Filter: (ap.bank_account_id = ba.id)
  • Rows Removed by Join Filter: 1384636
  • Buffers: shared hit=836821 read=180
7. 1,791,388.080 2,612,597.538 ↑ 89.8 2,037 1

Nested Loop (cost=0.84..3,635,235,328.98 rows=182,900 width=75) (actual time=899,579.973..2,612,597.538 rows=2,037 loops=1)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, ap.payee_name, ap.payment_number, ah.id, ah.post_month, ah.is_initial_import, ah.cid, ah.gl_transaction_type_id, ah.ap_payee_location_id
  • Join Filter: ((max(LEAST(ah_1.id, ah_1.reversal_ap_header_id))) = ah.id)
  • Rows Removed by Join Filter: 16131761476
  • Buffers: shared hit=836786 read=180
8. 860.474 860.474 ↑ 7.1 79,576 1

Index Scan using idx_ap_headers_post_month on public.ap_headers ah (cost=0.42..40,391.55 rows=564,819 width=21) (actual time=0.017..860.474 rows=79,576 loops=1)

  • Output: ah.id, ah.post_month, ah.is_initial_import, ah.cid, ah.gl_transaction_type_id, ah.ap_payee_location_id
  • Filter: ((ah.deleted_on IS NULL) AND (NOT ah.is_initial_import) AND (ah.cid = 3395))
  • Rows Removed by Filter: 440
  • Buffers: shared hit=15678 read=180
9. 819,508.905 820,348.984 ↓ 1.1 202,721 79,576

Materialize (cost=0.42..489,112.85 rows=183,862 width=58) (actual time=0.000..10.309 rows=202,721 loops=79,576)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, ap.payee_name, ap.payment_number, (max(LEAST(ah_1.id, ah_1.reversal_ap_header_id)))
  • Buffers: shared hit=821108
10. 127.474 840.079 ↓ 1.1 202,724 1

Nested Loop (cost=0.42..488,193.54 rows=183,862 width=58) (actual time=0.027..840.079 rows=202,724 loops=1)

  • Output: ap.id, ap.cid, ap.payment_status_type_id, ap.ap_payment_type_id, ap.bank_account_id, ap.payment_date, ap.payment_amount, ap.payee_name, ap.payment_number, (max(LEAST(ah_1.id, ah_1.reversal_ap_header_id)))
  • Buffers: shared hit=821108
11. 104.433 104.433 ↓ 1.1 202,724 1

Seq Scan on public.ap_payments ap (cost=0.00..16,587.51 rows=183,862 width=54) (actual time=0.008..104.433 rows=202,724 loops=1)

  • Output: ap.id, ap.cid, ap.merchant_account_id, ap.bank_account_id, ap.merchant_gateway_id, ap.payment_medium_id, ap.ap_payment_type_id, ap.payment_status_type_id, ap.return_type_id, ap.ap_payment_id, ap.check_account_type_id, ap.ap_payment_batch_id, ap.source_check_account_type_id, ap.ap_remittance_id, ap.eft_reference, ap.remote_primary_key, ap.return_remote_primary_key, ap.secure_reference_number, ap.payment_memo, ap.payment_date, ap.issue_datetime, ap.payment_amount, ap.payee_name, ap.billto_ip_address, ap.payment_number, ap.check_bank_name, ap.check_name_on_account, ap.check_name_on_account_line_2, ap.check_routing_number, ap.check_fractional_routing_number, ap.check_account_number_encrypted, ap.source_check_bank_name, ap.source_check_name_on_account, ap.source_check_routing_number, ap.source_check_account_number_encrypted,
  • Filter: ((NOT ap.is_unclaimed_property) AND (ap.cid = 3395) AND (ap.ap_payment_type_id = ANY ('{1,2,3,4,5,6,7,8,9,10,11,12,13}'::integer[])))
  • Rows Removed by Filter: 364
  • Buffers: shared hit=6684
12. 0.000 608.172 ↑ 1.0 1 202,724

GroupAggregate (cost=0.42..2.50 rows=1 width=12) (actual time=0.003..0.003 rows=1 loops=202,724)

  • Output: max(LEAST(ah_1.id, ah_1.reversal_ap_header_id)), ah_1.cid, ah_1.ap_payment_id
  • Group Key: ah_1.cid, ah_1.ap_payment_id
  • Buffers: shared hit=814424
13. 608.172 608.172 ↑ 1.0 1 202,724

Index Scan using idx_ap_headers_ap_payment_id_partial on public.ap_headers ah_1 (cost=0.42..2.47 rows=1 width=16) (actual time=0.003..0.003 rows=1 loops=202,724)

  • Output: ah_1.cid, ah_1.ap_payment_id, ah_1.id, ah_1.reversal_ap_header_id
  • Index Cond: (ah_1.ap_payment_id = ap.id)
  • Filter: ((ah_1.deleted_on IS NULL) AND (ah_1.cid = ap.cid) AND (ah_1.ap_header_type_id = 5) AND (ah_1.gl_transaction_type_id = 3))
  • Rows Removed by Filter: 0
  • Buffers: shared hit=814424
14. 75.063 75.369 ↑ 1.2 681 2,037

Materialize (cost=0.00..77.44 rows=785 width=36) (actual time=0.001..0.037 rows=681 loops=2,037)

  • Output: ba.account_name, ba.reimbursed_property_id, ba.cid, ba.id
  • Buffers: shared hit=35
15. 0.306 0.306 ↑ 1.1 716 1

Seq Scan on public.bank_accounts ba (cost=0.00..73.51 rows=785 width=36) (actual time=0.030..0.306 rows=716 loops=1)

  • Output: ba.account_name, ba.reimbursed_property_id, ba.cid, ba.id
  • Filter: (ba.cid = 3395)
  • Buffers: shared hit=35
16. 2.037 2,157.183 ↓ 0.0 0 2,037

Limit (cost=2.27..33.45 rows=1 width=8) (actual time=1.059..1.059 rows=0 loops=2,037)

  • Output: gd.gl_reconciliation_id, gr.gl_reconciliation_status_type_id
  • Buffers: shared hit=61622 read=5834, local hit=5077
17. 4.074 2,155.146 ↓ 0.0 0 2,037

Result (cost=2.27..33.45 rows=1 width=8) (actual time=1.058..1.058 rows=0 loops=2,037)

  • Output: gd.gl_reconciliation_id, gr.gl_reconciliation_status_type_id
  • One-Time Filter: (ah.cid = 3395)
  • Buffers: shared hit=61622 read=5834, local hit=5077
18. 57.436 2,151.072 ↓ 0.0 0 2,037

Nested Loop Semi Join (cost=2.27..33.45 rows=1 width=8) (actual time=1.056..1.056 rows=0 loops=2,037)

  • Output: gd.gl_reconciliation_id, gr.gl_reconciliation_status_type_id
  • Join Filter: (ad.property_id = load_properties_info.property_id)
  • Rows Removed by Join Filter: 268
  • Buffers: shared hit=61622 read=5834, local hit=5077
19. 9.633 2,034.963 ↑ 1.0 1 2,037

Nested Loop (cost=2.26..18.01 rows=1 width=12) (actual time=0.659..0.999 rows=1 loops=2,037)

  • Output: ad.property_id, gd.gl_reconciliation_id, gr.gl_reconciliation_status_type_id
  • Inner Unique: true
  • Join Filter: (aa.cid = gr.cid)
  • Buffers: shared hit=61622 read=5834
20. 20.076 2,002.371 ↑ 1.0 1 2,037

Nested Loop (cost=1.98..17.65 rows=1 width=24) (actual time=0.646..0.983 rows=1 loops=2,037)

  • Output: ad.cid, ad.property_id, aa.cid, gh.cid, gd.gl_reconciliation_id, gd.cid
  • Join Filter: ((aa.cid = gd.cid) AND (CASE WHEN ((aa.origin_ap_allocation_id IS NOT NULL) OR (aa.lump_ap_header_id IS NOT NULL)) THEN (aa.allocation_amount * '-1'::numeric) ELSE aa.allocation_amount END = gd.amount) AND (CASE WHEN (ba.reimbursed_property_id <> aa.property_id) THEN ba.reimbursed_property_id ELSE aa.property_id END = gd.property_id))
  • Buffers: shared hit=53969 read=5833
21. 10.683 1,817.004 ↓ 2.0 2 2,037

Nested Loop (cost=1.41..11.79 rows=1 width=38) (actual time=0.522..0.892 rows=2 loops=2,037)

  • Output: ad.cid, ad.property_id, aa.cid, aa.origin_ap_allocation_id, aa.lump_ap_header_id, aa.allocation_amount, aa.property_id, gh.cid, gh.id
  • Buffers: shared hit=35963 read=5279
22. 19.901 183.330 ↓ 2.0 2 2,037

Nested Loop (cost=0.85..9.86 rows=1 width=38) (actual time=0.083..0.090 rows=2 loops=2,037)

  • Output: ad.cid, ad.property_id, aa.cid, aa.id, aa.gl_transaction_type_id, aa.origin_ap_allocation_id, aa.lump_ap_header_id, aa.allocation_amount, aa.property_id
  • Buffers: shared hit=21221 read=155
23. 101.850 101.850 ↓ 2.0 2 2,037

Index Scan using idx_ap_details_ap_header_id on public.ap_details ad (cost=0.42..7.37 rows=1 width=12) (actual time=0.048..0.050 rows=2 loops=2,037)

  • Output: ad.cid, ad.id, ad.property_id
  • Index Cond: (ah.id = ad.ap_header_id)
  • Filter: ((ad.deleted_on IS NULL) AND (ah.gl_transaction_type_id = ad.gl_transaction_type_id) AND (ah.post_month = ad.post_month))
  • Buffers: shared hit=8210 read=61
24. 61.579 61.579 ↑ 1.0 1 3,241

Index Scan using idx_ap_allocations_credit_ap_detail_id on public.ap_allocations aa (cost=0.42..2.47 rows=1 width=34) (actual time=0.019..0.019 rows=1 loops=3,241)

  • Output: aa.id, aa.cid, aa.property_id, aa.gl_transaction_type_id, aa.origin_ap_allocation_id, aa.charge_ap_detail_id, aa.credit_ap_detail_id, aa.ap_gl_account_id, aa.purchases_clearing_gl_account_id, aa.pending_reimbursements_gl_account_id, aa.inter_co_ap_gl_account_id, aa.bank_gl_account_id, aa.charge_gl_account_id, aa.credit_gl_account_id, aa.charge_wip_gl_account_id, aa.credit_wip_gl_account_id, aa.charge_ap_transaction_type_id, aa.credit_ap_transaction_type_id, aa.charge_inter_co_property_id, aa.credit_inter_co_property_id, aa.charge_reimbursed_ap_detail_id, aa.credit_reimbursed_ap_detail_id, aa.accrual_debit_gl_account_id, aa.accrual_credit_gl_account_id, aa.cash_debit_gl_account_id, aa.cash_credit_gl_account_id, aa.lump_ap_header_id, aa.period_id, aa.allocation_datetime, aa.allocation_amount, aa.post_month,
  • Index Cond: (aa.credit_ap_detail_id = ad.id)
  • Filter: ((aa.gl_transaction_type_id = 4) AND (ad.cid = aa.cid))
  • Rows Removed by Filter: 0
  • Buffers: shared hit=13011 read=94
25. 1,622.991 1,622.991 ↑ 1.0 1 3,319

Index Scan using idx_gl_headers_cid_reference_id on public.gl_headers gh (cost=0.56..1.89 rows=1 width=16) (actual time=0.315..0.489 rows=1 loops=3,319)

  • Output: gh.id, gh.cid, gh.gl_header_type_id, gh.gl_transaction_type_id, gh.gl_header_status_type_id, gh.gl_book_id, gh.reference_id, gh.property_id, gh.lease_id, gh.offsetting_gl_header_id, gh.template_gl_header_id, gh.close_period_id, gh.bulk_property_id, gh.bulk_property_unit_id, gh.bulk_company_department_id, gh.bulk_gl_dimension_id, gh.bulk_job_phase_id, gh.bulk_ap_contract_id, gh.bulk_property_building_id, gh.gl_header_schedule_id, gh.ap_routing_tag_id, gh.reclass_gl_header_id, gh.header_number, gh.transaction_datetime, gh.post_month, gh.reverse_post_month, gh.post_date, gh.reference, gh.memo, gh.external_url, gh.template_name, gh.bulk_is_confidential, gh.is_template, gh.is_reverse, gh.updated_by, gh.updated_on, gh.created_by, gh.created_on
  • Index Cond: ((gh.cid = aa.cid) AND (gh.reference_id = aa.id))
  • Filter: (gh.gl_transaction_type_id = 4)
  • Rows Removed by Filter: 1
  • Buffers: shared hit=14742 read=5124
26. 165.291 165.291 ↑ 1.0 1 3,241

Index Scan using idx_gl_details_gl_header_id on public.gl_details gd (cost=0.57..5.83 rows=1 width=21) (actual time=0.051..0.051 rows=1 loops=3,241)

  • Output: gd.gl_reconciliation_id, gd.cid, gd.gl_header_id, gd.amount, gd.property_id
  • Index Cond: (gd.gl_header_id = gh.id)
  • Filter: ((gd.gl_reconciliation_id IS NOT NULL) AND (gh.cid = gd.cid))
  • Rows Removed by Filter: 1
  • Buffers: shared hit=18006 read=554
27. 22.959 22.959 ↑ 1.0 1 2,551

Index Scan using pk_gl_reconciliations on public.gl_reconciliations gr (cost=0.28..0.32 rows=1 width=12) (actual time=0.009..0.009 rows=1 loops=2,551)

  • Output: gr.id, gr.cid, gr.gl_reconciliation_status_type_id, gr.bank_account_id, gr.beginning_date, gr.statement_date, gr.beginning_amount, gr.ending_amount, gr.ending_gl_amount, gr.is_system, gr.reconciled_by, gr.reconciled_on, gr.is_post_month, gr.deleted_by, gr.deleted_on, gr.updated_by, gr.updated_on, gr.created_by, gr.created_on
  • Index Cond: ((gr.cid = gd.cid) AND (gr.id = gd.gl_reconciliation_id))
  • Buffers: shared hit=7653 read=1
28. 58.673 58.673 ↑ 1.0 214 2,551

Seq Scan on pg_temp_17.load_properties_info (cost=0.00..8.45 rows=215 width=4) (actual time=0.006..0.023 rows=214 loops=2,551)

  • Output: load_properties_info.cid, load_properties_info.property_id, load_properties_info.property_name
  • Buffers: local hit=5077
29. 4.074 185.367 ↓ 0.0 0 2,037

GroupAggregate (cost=7.40..17.54 rows=1 width=48) (actual time=0.091..0.091 rows=0 loops=2,037)

  • Output: count(DISTINCT ad_1.property_id), max((lp.property_name)::text), (ah.cid), (ah.id)
  • Group Key: (ah.cid), (ah.id)
  • Buffers: shared hit=8329, local hit=4074
30. 16.296 181.293 ↓ 0.0 0 2,037

Result (cost=7.40..17.50 rows=1 width=30) (actual time=0.089..0.089 rows=0 loops=2,037)

  • Output: (ah.cid), (ah.id), ad_1.property_id, lp.property_name
  • One-Time Filter: (ah.cid = 3395)
  • Buffers: shared hit=8322, local hit=4074
31. 99.813 164.997 ↓ 0.0 0 2,037

Hash Join (cost=7.40..17.50 rows=1 width=30) (actual time=0.081..0.081 rows=0 loops=2,037)

  • Output: ah.cid, ah.id, ad_1.property_id, lp.property_name
  • Hash Cond: ((lp.cid = ad_1.cid) AND (lp.property_id = ad_1.property_id))
  • Buffers: shared hit=8322, local hit=4074
32. 42.777 42.777 ↑ 1.0 215 2,037

Seq Scan on pg_temp_17.load_properties_info lp (cost=0.00..8.45 rows=215 width=26) (actual time=0.006..0.021 rows=215 loops=2,037)

  • Output: lp.cid, lp.property_id, lp.property_name
  • Buffers: local hit=4074
33. 6.111 22.407 ↓ 2.0 2 2,037

Hash (cost=7.37..7.37 rows=1 width=8) (actual time=0.011..0.011 rows=2 loops=2,037)

  • Output: ad_1.property_id, ad_1.cid
  • Buckets: 1024 Batches: 1 Memory Usage: 9kB
  • Buffers: shared hit=8270
34. 16.296 16.296 ↓ 2.0 2 2,037

Index Scan using idx_ap_details_ap_header_id on public.ap_details ad_1 (cost=0.42..7.37 rows=1 width=8) (actual time=0.008..0.008 rows=2 loops=2,037)

  • Output: ad_1.property_id, ad_1.cid
  • Index Cond: (ah.id = ad_1.ap_header_id)
  • Filter: ((ad_1.deleted_on IS NULL) AND (ah.gl_transaction_type_id = ad_1.gl_transaction_type_id) AND (ah.post_month = ad_1.post_month))
  • Buffers: shared hit=8270
35. 0.375 0.375 ↑ 1.0 1 25

Index Scan using idx_ap_payee_locations_id on public.ap_payee_locations apl (cost=0.42..0.47 rows=1 width=15) (actual time=0.015..0.015 rows=1 loops=25)

  • Output: apl.id, apl.cid, apl.ap_payee_id, apl.default_ap_routing_tag_id, apl.ap_legal_entity_id, apl.store_id, apl.payee_name, apl.vendor_code, apl.location_name, apl.location_datetime, apl.phone_number, apl.street_line1, apl.street_line2, apl.street_line3, apl.city, apl.state_code, apl.fax_number, apl.mobile_number, apl.email_address, apl.province, apl.postal_code, apl.country_code, apl.notes, apl.duns_number, apl.is_primary, apl.disabled_by, apl.disabled_on, apl.deleted_by, apl.deleted_on, apl.updated_by, apl.updated_on, apl.created_by, apl.created_on, apl.details
  • Index Cond: (apl.id = ah.ap_payee_location_id)
  • Filter: (apl.cid = 3395)
  • Buffers: shared hit=101
36. 0.030 0.050 ↑ 7.0 2 25

Materialize (cost=0.00..2.49 rows=14 width=15) (actual time=0.002..0.002 rows=2 loops=25)

  • Output: apt.name, apt.id
  • Buffers: shared hit=1
37. 0.020 0.020 ↑ 7.0 2 1

Seq Scan on public.ap_payment_types apt (cost=0.00..2.42 rows=14 width=15) (actual time=0.020..0.020 rows=2 loops=1)

  • Output: apt.name, apt.id
  • Buffers: shared hit=1