Performance Problem with sub-select using array

From: "Travis Whitton" <tinymountain(at)gmail(dot)com>
To: pgsql-sql(at)postgresql(dot)org
Subject: Performance Problem with sub-select using array
Date: 2006-08-24 19:01:39
Message-ID: cf9b4f3e0608241201l51a2e61cxd15d2ddbbdd710b9@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Hello all, I'm running the following query on about 6,000 records worth of
data, and it takes about 8 seconds to complete. Can anyone provide any
suggestions to improve performance? I have an index on two columns in the
transacts table (program_id, customer_id). If I specify a number for
customer.id in the sub-select, query time is reduced to about 2 seconds,
which still seems like a million years for only 6,000 records, but I'm
guessing that the sub-select can't resolve the id since it's done before the
outer query, so it scans the entre recordset for every row? Transacts is a
many to many table for customers and programs. I know this query doesn't
even reference any columns from programs; however, I dynamically insert
where clauses to constrain the result set.

SELECT distinct customers.id, first_name, last_name, address1, contact_city,
contact_state, primary_phone, email, array(select programs.program_name from
transacts, programs where customer_id = customers.id and programs.id =
transacts.program_id and submit_status = 'success') AS partners from
customers, transacts, programs where transacts.customer_id = customers.idand
transacts.program_id = programs.id

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message André José Guergolet 2006-08-24 20:27:58 Lock Problem
Previous Message Scott Petersen 2006-08-24 18:35:57 Re: Deleting Functions