Re: Strange Execution-Plan for NOT EXISTS - Mailing list pgsql-sql

From Tom Lane
Subject Re: Strange Execution-Plan for NOT EXISTS
Date
Msg-id 18767.978981137@sss.pgh.pa.us
Whole thread Raw
In response to Strange Execution-Plan for NOT EXISTS  (Jens Hartwig <jhartwig@debis.com>)
List pgsql-sql
Jens Hartwig <jhartwig@debis.com> writes:
> select (min(id) + 1)
> from t_dummy d1
> where not exists (
>     select id
>     from t_dummy d2
>     where d2.id = (d1.id + 1)
> );

> Aggregate  (cost=2924207.88..2924207.88 rows=1 width=12)
-> Seq Scan on t_dummy d1  (cost=0.00..2924207.88 rows=1 width=12)
>         SubPlan
>           -> Seq Scan on t_dummy d2  (cost=0.00..331.36 rows=1 width=12)

> Why that? Wouldn�t it be possible to simple use the primary key index in
> the sub-query

I think that 7.0.* is too stupid to consider an indexscan for a
qualifier that looks like "indexvar = ($1 + 1)", which is what you
effectively have in this case ($1 being the Param passed in from
the outer plan).  It only recognizes "indexvar = constant" and
"indexvar = param" as indexable expressions.  Current sources do
better.
        regards, tom lane


pgsql-sql by date:

Previous
From: Jens Hartwig
Date:
Subject: Re: create default
Next
From: "Robert B. Easter"
Date:
Subject: Re: Sv: how to build this query ??? Please help !!!