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