Re: Performance of a view

From: "Thomas F(dot) O'Connell" <tfo(at)sitening(dot)com>
To: John McCawley <nospam(at)hardgeus(dot)com>
Cc: PgSQL General <pgsql-general(at)postgresql(dot)org>
Subject: Re: Performance of a view
Date: 2005-11-17 15:31:58
Message-ID: 184A5F2E-FB68-469F-8D55-CD56D36E51E5@sitening.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


On Nov 14, 2005, at 7:40 PM, John McCawley wrote:

> I have a view which is defined as follows:
>
> //-------------------------
> SELECT tbl_claim.claim_id, count(tbl_invoice.invoice_id) AS count,
> min(tbl_invoice.invoicedate) AS invoicedate
> FROM tbl_claim
> LEFT JOIN tbl_invoice ON tbl_claim.claim_id =
> tbl_invoice.claim_id AND tbl_invoice.active = 1
> GROUP BY tbl_claim.claim_id;
> //-------------------------

<snip>

> I roughly understand what is happening...in the first query, the
> dataset is being knocked down to one row, then somehow the view is
> being constructed using only that subset of the claim table. In
> the second query, the view is being constructed from the entire
> dataset which is hundreds of thousands of rows, and thus is much
> slower.
>
> My question is how would I go about obtaining the behavior from the
> faster query in the slower query? I have switched the order of the
> tables, and tried many different permutations of the query, but no
> matter what I do, it seems that unless I specifically hard-code a
> claim_id filter on the claim_id, I am forced to run through every
> record.
>
> Thoughts?

I'd be curious to see what would happen if you added claimnum as a
field in your view. I don't have a complete understanding of the
postgres internals in terms of how it is able to push outer clauses
down in to its views, but I think it might be able to optimize in
that fashion if it is able to add a WHERE clause internally to the
view, which it can't do in the case of claimnum since it doesn't
exist in the view.

--
Thomas F. O'Connell
Database Architecture and Programming
Co-Founder
Sitening, LLC

http://www.sitening.com/
110 30th Avenue North, Suite 6
Nashville, TN 37203-6320
615-469-5150
615-469-5151 (fax)

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message David Rysdam 2005-11-17 15:38:50 Very slow queries on 8.1
Previous Message Csaba Nagy 2005-11-17 15:22:48 strange behavior on 8.1