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 pieces.poLineId = po_line.id LEFT JOIN fs00001034_mod_orders_storage.purchase_order ON po_line.purchaseOrderId = purchase_order.id; "Merge Right Join (cost=1249.68..142559.03 rows=325023 width=80) (actual time=6.223..22232.873 rows=325023 loops=1)" " Merge Cond: (po_line.id = pieces.polineid)" " -> Gather Merge (cost=1000.60..50564.13 rows=35743 width=1682) (actual time=6.142..78.583 rows=35743 loops=1)" " Workers Planned: 2" " Workers Launched: 2" " -> Nested Loop Left Join (cost=0.58..45438.48 rows=14893 width=1682) (actual time=0.034..47.017 rows=11914 loops=3)" " -> Parallel Index Scan using po_line_pkey on po_line (cost=0.29..35708.12 rows=14893 width=850) (actual time=0.024..10.895 rows=11914 loops=3)" " -> Index Scan using purchase_order_pkey on purchase_order (cost=0.29..0.65 rows=1 width=864) (actual time=0.002..0.002 rows=1 loops=35743)" " Index Cond: (po_line.purchaseorderid = id)" " -> Index Scan using pieces_polineid_idx on pieces (cost=0.42..52902.78 rows=325023 width=470) (actual time=0.018..175.400 rows=325023 loops=1)" "Planning time: 0.727 ms" "Execution time: 22256.756 ms"