| From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
|---|---|
| To: | Edson Richter <edsonrichter(at)hotmail(dot)com> |
| Cc: | pgsql-general(at)postgresql(dot)org |
| Subject: | Re: [PERFORM] Inaccurate Explain Cost |
| Date: | 2012-09-26 23:29:14 |
| Message-ID: | 6926.1348702154@sss.pgh.pa.us |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-general pgsql-performance |
Edson Richter <edsonrichter(at)hotmail(dot)com> writes:
>> That said, looking at your actual query:
>>
>> SELECT COUNT(DISTINCT eu.id)
>> FROM exchange_uploads eu
>> JOIN upload_destinations ud ON ud.id = eu.upload_destination_id
>> LEFT JOIN uploads u ON u.id = eu.upload_id
>> LEFT JOIN import_errors ie ON ie.exchange_upload_id = eu.id
>> LEFT JOIN exchanges e ON e.id = ud.exchange_id
>> WHERE eu.created_at >= '2012-07-27 21:21:57.363944'
>> AND ud.office_id = 6;
>>
>> Doesn't need half of these joins. They're left joins, and never used
>> in the query results or where criteria. You could just use this:
> Interesting. I've similar situation, where user can choose a set of
> filters, and then the query must have several left joins "just in case"
> (user need in the filer).
> I know other database that is able to remove unnecessary outer joins
> from queries when they are not relevant and for instance become faster.
> Can't PostgreSQL do the same?
It does, and did - note the query plan is only scanning 3 of the 5
tables mentioned in the query. (The other left join appears to be
to a non-unique column, which makes it not redundant.)
regards, tom lane
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Leonardo M. Ramé | 2012-09-26 23:46:00 | Linux PowerPC 64bits issue |
| Previous Message | Adrian Klaver | 2012-09-26 23:07:37 | Re: Odd Invalid type name error in postgresql 9.1 |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Jeff Janes | 2012-09-27 00:04:08 | Re: [GENERAL] Inaccurate Explain Cost |
| Previous Message | Samuel Gendler | 2012-09-26 22:42:09 | Re: Inaccurate Explain Cost |