Обсуждение: subselects doesn't work in v7.0.3
jose (jose@sferacarta.com) reports a bug with a severity of 2
The lower the number the more severe it is.
Short Description
subselects doesn't work in v7.0.3
Long Description
Version: PostgreSQL 7.0.3 on i686-pc-linux-gnu, compiled by gcc 2.95.2
- I'm trying the following query in a table with 1973093 rows:
EXPLAIN select count(*)
from marche
where ristampa = 'S'
and marca in
(
select marca from marche where ristampa is null and
data_lotto between '1998/07/01' and '1999/01/31'
);
NOTICE: QUERY PLAN:
Aggregate (cost=98854229180.08..98854229180.08 rows=1 width=4)
-> Seq Scan on marche (cost=0.00..98854229130.75 rows=19731 width=4)
SubPlan
-> Materialize (cost=50101.13..50101.13 rows=6577 width=12)
-> Seq Scan on marche (cost=0.00..50101.13 rows=6577 width=12)
EXPLAIN
- but it takes to many time: (after about 16 hours I interrupt the query)
verde:/var/lib/postgreSQL$ time psql interno < ./sql
Cancel request sent
ERROR: Query was cancelled.
ERROR: Query was cancelled.
real 954m44.582s
user 0m0.020s
sys 0m0.000s
- I tried the same query on DBMaker and it takes only about 1 minute.
dmSQL>
USE db #1 disconnected from db:<interno> by user:<sysadm>
real 1m10.070s
user 0m0.020s
sys 0m0.020s
- I tried the same query in a table with few rows and it
seems to work.
Sample Code
No file was uploaded with this report
pgsql-bugs@postgresql.org wrote:
>
> jose (jose@sferacarta.com) reports a bug with a severity of 2
> The lower the number the more severe it is.
>
> Short Description
> subselects doesn't work in v7.0.3
>
> Long Description
> Version: PostgreSQL 7.0.3 on i686-pc-linux-gnu, compiled by gcc 2.95.2
>
> - I'm trying the following query in a table with 1973093 rows:
>
> EXPLAIN select count(*)
> from marche
> where ristampa = 'S'
> and marca in
> (
> select marca from marche where ristampa is null and
> data_lotto between '1998/07/01' and '1999/01/31'
> );
>
> NOTICE: QUERY PLAN:
> Aggregate (cost=98854229180.08..98854229180.08 rows=1 width=4)
> -> Seq Scan on marche (cost=0.00..98854229130.75 rows=19731 width=4)
> SubPlan
> -> Materialize (cost=50101.13..50101.13 rows=6577 width=12)
> -> Seq Scan on marche (cost=0.00..50101.13 rows=6577 width=12)
> EXPLAIN
>
> - but it takes to many time: (after about 16 hours I interrupt the query)
This is a known bug with IN ( ... ) and the use of indexes - you would
get better results using EXISTS.
Cheers,
Andrew.
--
_____________________________________________________________________
Andrew McMillan, e-mail: Andrew@catalyst.net.nz
Catalyst IT Ltd, PO Box 10-225, Level 22, 105 The Terrace, Wellington
Me: +64 (21) 635 694, Fax: +64 (4) 499 5596, Office: +64 (4) 499 2267
Andrew McMillan wrote: > pgsql-bugs@postgresql.org wrote: > > > > jose (jose@sferacarta.com) reports a bug with a severity of 2 > > The lower the number the more severe it is. > > > > Short Description > > subselects doesn't work in v7.0.3 > > > > Long Description > > Version: PostgreSQL 7.0.3 on i686-pc-linux-gnu, compiled by gcc 2.95.2 > > > > - I'm trying the following query in a table with 1973093 rows: > > > > EXPLAIN select count(*) > > from marche > > where ristampa = 'S' > > and marca in > > ( > > select marca from marche where ristampa is null and > > data_lotto between '1998/07/01' and '1999/01/31' > > ); > > > > NOTICE: QUERY PLAN: > > Aggregate (cost=98854229180.08..98854229180.08 rows=1 width=4) > > -> Seq Scan on marche (cost=0.00..98854229130.75 rows=19731 width=4) > > SubPlan > > -> Materialize (cost=50101.13..50101.13 rows=6577 width=12) > > -> Seq Scan on marche (cost=0.00..50101.13 rows=6577 width=12) > > EXPLAIN > > > > - but it takes to many time: (after about 16 hours I interrupt the query) > > This is a known bug with IN ( ... ) and the use of indexes - you would > get better results using EXISTS. Yes. EXISTS works. PostgreSQL takes 9.720 secs against DBMaker 7.145 secs Thank you very much Jose' > > > Cheers, > Andrew. > -- > _____________________________________________________________________ > Andrew McMillan, e-mail: Andrew@catalyst.net.nz > Catalyst IT Ltd, PO Box 10-225, Level 22, 105 The Terrace, Wellington > Me: +64 (21) 635 694, Fax: +64 (4) 499 5596, Office: +64 (4) 499 2267