Jorge Arévalo-2 wrote > (SELECT value1,value2,value3,value4,value5, hstore(ARRAY['field9', > 'field10', 'field11', 'field12', 'field13', 'field14'], ARRAY[field9, > field10, field11, field12, field13, field14) as metadata, value7, (select > array((select row(f1, f2) from table2 p where p.field7 = field7))) as > values_array FROM table1) You might try seeing whether: FROM table1 JOIN ( SELECT field7, array_agg(row(f1, f2)) AS values_array FROM table2 GROUP BY field7 ) tbl2_agg USING (field7) helps... I'm also dubious (though this isn't necessarily a performance issue) of: array[...] AS metadata Without context I would say this would be better as a composite type instead of an array. You may find it useful to use named composite types elsewhere too... David J. -- View this message in context: http://postgresql.1045698.n5.nabble.com/Query-optimization-tp5824739p5824746.html Sent from the PostgreSQL - general mailing list archive at Nabble.com. -- Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general