Thread: Query optimization (select single record and join)

Query optimization (select single record and join)

From
"Orest Kozyar"
Date:
I have the following sql:

CREATE OR REPLACE FUNCTION foo (in x integer) RETURNS float AS $$
    SELECT max(tableB.columnC)
    FROM
        tableA inner join tableB on (tableA.columnA =
tableB.columnB)
    WHERE
        tableA.columbA = x
... (additional code to select which of the many "foo" records referencing
the same row in the foreign table is the one we want)

What I am wondering is whether the database first eliminate all rows in
tableA that don't meet the criteria before performing the join, or does it
perform the join first then eliminate all records that don't meet the
criteria?

Thanks,
Orest


Re: Query optimization (select single record and join)

From
Richard Huxton
Date:
Orest Kozyar wrote:
> What I am wondering is whether the database first eliminate all rows in
> tableA that don't meet the criteria before performing the join, or does it
> perform the join first then eliminate all records that don't meet the
> criteria?

If you use "EXPLAIN SELECT ..." then PostgreSQL will tell you how it's
going to execute your query. If you use "EXPLAIN ANALYZE SELECT ..." it
will tell you what it actually did too. See manuals and google for
details and discussion.

Oh, and if you don't know about VACUUM and ANALYZE you'll probably want
to read up on those too.

--
   Richard Huxton
   Archonet Ltd