NOT IN query takes forever - Mailing list pgsql-performance

From Marius Andreiana
Subject NOT IN query takes forever
Date
Msg-id 1091522942.4936.5.camel@marte.biciclete.ro
Whole thread Raw
Responses Re: NOT IN query takes forever
List pgsql-performance
Hi

I have 2 tables like this:
CREATE TABLE query (
    query_id     int not null,
    dat     varchar(64)  null ,
    sub_acc_id     int  null ,
    query_ip     varchar(64)  null ,
    osd_user_type     varchar(64)  null
)
;

CREATE TABLE trans (
    transaction_id     varchar(64)  not null ,
    date     varchar(64)  null ,
    query_id     int not  null ,
    sub_acc_id     int  null ,
    reg_acc_id     int  null
)
;

CREATE UNIQUE INDEX query_query_id_idx
ON query (query_id)
;

CREATE INDEX trans_reg_acc_id_idx
ON trans (reg_acc_id)
;

CREATE INDEX trans_query_id_idx
ON trans(query_id)
;
osd=> select count(*) from trans
osd-> ;
 count
--------
 598809
(1 row)

osd=>
osd=> select count(*) from query
osd-> ;
 count
--------
 137042
(1 row)

I just vacuum analyse'd the database.

Trying to run this query:
EXPLAIN ANALYSE
select * FROM trans
WHERE query_id NOT IN (select query_id FROM query)

but it will remain like that forever (cancelled after 30 min).

My postgresql.conf is the default:
# - Memory -

shared_buffers = 1000           # min 16, at least max_connections*2,
8KB each
#sort_mem = 1024                # min 64, size in KB
#vacuum_mem = 8192              # min 1024, size in KB

Should I adjust something?

Using postgresql 7.4.2, saw in release notes that IN/NOT IN queries are
at least as faster than EXISTS.

Thank you!
--
Marius Andreiana
Galuna - Solutii Linux in Romania
http://www.galuna.ro


pgsql-performance by date:

Previous
From: "Scott Marlowe"
Date:
Subject: Re: my boss want to migrate to ORACLE
Next
From: "Lending, Rune"
Date:
Subject: pg_autovacuum parameters