EXPLAIN ANALYZE SELECT pieces.id, json_build_object('id', pieces.jsonb ->> 'id'::text, 'caption', pieces.jsonb ->> 'caption'::text, 'comment', pieces.jsonb ->> 'comment'::text, 'dateOrdered', purchase_order.jsonb ->> 'dateOrdered'::text, 'checkin', po_line.jsonb ->> 'checkinItems'::text, 'itemId', pieces.jsonb ->> 'itemId'::text, 'locationId', pieces.jsonb ->> 'locationId'::text, 'pieceFormat', pieces.jsonb ->> 'format'::text, 'poLineId', pieces.jsonb ->> 'poLineId'::text, 'poLineNumber', po_line.jsonb ->> 'poLineNumber'::text, 'purchaseOrderId', po_line.jsonb ->> 'purchaseOrderId'::text, 'poLineReceiptStatus', po_line.jsonb ->> 'receiptStatus'::text, 'receivedDate', pieces.jsonb ->> 'receivedDate'::text, 'title', po_line.jsonb ->> 'titleOrPackage'::text, 'receivingNote', (po_line.jsonb -> 'details'::text) ->> 'receivingNote'::text, 'receivingStatus', pieces.jsonb ->> 'receivingStatus'::text, 'supplement', pieces.jsonb ->> 'supplement'::text, 'receiptDate', pieces.jsonb ->> 'receiptDate'::text) AS jsonb, json_build_object('id', pieces.jsonb ->> 'id'::text, 'caption', pieces.jsonb ->> 'caption'::text, 'comment', pieces.jsonb ->> 'comment'::text, 'acqUnitIds', purchase_order.jsonb ->> 'acqUnitIds'::text, 'dateOrdered', purchase_order.jsonb ->> 'dateOrdered'::text, 'checkin', po_line.jsonb ->> 'checkinItems'::text, 'itemId', pieces.jsonb ->> 'itemId'::text, 'locationId', pieces.jsonb ->> 'locationId'::text, 'pieceFormat', pieces.jsonb ->> 'format'::text, 'poLineId', pieces.jsonb ->> 'poLineId'::text, 'poLineNumber', po_line.jsonb ->> 'poLineNumber'::text, 'purchaseOrderId', po_line.jsonb ->> 'purchaseOrderId'::text, 'poLineReceiptStatus', po_line.jsonb ->> 'receiptStatus'::text, 'receivedDate', pieces.jsonb ->> 'receivedDate'::text, 'title', po_line.jsonb ->> 'titleOrPackage'::text, 'receivingNote', (po_line.jsonb -> 'details'::text) ->> 'receivingNote'::text, 'receivingStatus', pieces.jsonb ->> 'receivingStatus'::text, 'supplement', pieces.jsonb ->> 'supplement'::text, 'receiptDate', pieces.jsonb ->> 'receiptDate'::text)::jsonb AS metadata FROM fs00001034_mod_orders_storage.pieces LEFT JOIN fs00001034_mod_orders_storage.po_line ON fs00001034_mod_orders_storage.f_unaccent(pieces.jsonb ->> 'poLineId'::text) = fs00001034_mod_orders_storage.f_unaccent(po_line.jsonb ->> 'id'::text) LEFT JOIN fs00001034_mod_orders_storage.purchase_order ON fs00001034_mod_orders_storage.f_unaccent(po_line.jsonb ->> 'purchaseOrderId'::text) = fs00001034_mod_orders_storage.f_unaccent(purchase_order.jsonb ->> 'id'::text); "Gather (cost=42998.15..193517.86 rows=325023 width=80) (actual time=1055.135..10768.646 rows=325023 loops=1)" " Workers Planned: 2" " Workers Launched: 2" " -> Hash Left Join (cost=41998.15..139633.88 rows=135426 width=80) (actual time=1053.856..10081.592 rows=108341 loops=3)" " Hash Cond: (fs00001034_mod_orders_storage.f_unaccent((pieces.jsonb ->> 'poLineId'::text)) = fs00001034_mod_orders_storage.f_unaccent((po_line.jsonb ->> 'id'::text)))" " -> Parallel Seq Scan on pieces (cost=0.00..23782.26 rows=135426 width=454) (actual time=0.009..24.244 rows=108341 loops=3)" " -> Hash (cost=34185.37..34185.37 rows=35743 width=1663) (actual time=1053.180..1053.181 rows=35743 loops=3)" " Buckets: 4096 Batches: 16 Memory Usage: 3807kB" " -> Hash Left Join (cost=5945.36..34185.37 rows=35743 width=1663) (actual time=103.908..775.759 rows=35743 loops=3)" " Hash Cond: (fs00001034_mod_orders_storage.f_unaccent((po_line.jsonb ->> 'purchaseOrderId'::text)) = fs00001034_mod_orders_storage.f_unaccent((purchase_order.jsonb ->> 'id'::text)))" " -> Seq Scan on po_line (cost=0.00..8952.43 rows=35743 width=815) (actual time=0.006..13.975 rows=35743 loops=3)" " -> Hash (cost=3220.05..3220.05 rows=22905 width=848) (actual time=103.509..103.510 rows=22905 loops=3)" " Buckets: 8192 Batches: 8 Memory Usage: 2517kB" " -> Seq Scan on purchase_order (cost=0.00..3220.05 rows=22905 width=848) (actual time=0.007..6.185 rows=22905 loops=3)" "Planning time: 0.640 ms" "Execution time: 10784.220 ms" 1min 26