From: | Jean-Christian Imbeault <jc(at)mega-bucks(dot)co(dot)jp> |
---|---|
To: | pgsql-general <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: IN vs EXIIST |
Date: | 2002-09-19 09:36:56 |
Message-ID: | 3D899AB8.4070304@mega-bucks.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Henshall, Stuart - WCP wrote:
[deleted]
I tried your optimized query but it was muh slower. Here are the results:
##Query using EXISTS
$ !1173
time psql TMP -c "select count(distinct invoice_id) from invoice_li
where received='true'
AND shipped='false' AND cancelled='false'
AND
(NOT EXISTS
(
select * from invoice_li AS sq_inv_li where received='false'
AND cancelled='false' AND invoice_li.invoice_id=sq_inv_li.invoice_id
)
OR ship_now='true'
) "
count
-------
170
(1 row)
real 0m8.322s
user 0m0.010s
sys 0m0.000s
##Query using IN
$ !1175
time psql TMP -c "select count(distinct invoice_id) from invoice_li
where received='true'
AND shipped='false' AND cancelled='false'
AND
(invoice_id not in
(
select distinct invoice_id from invoice_li where received='false'
AND cancelled='false'
)
OR ship_now='true'
) "
count
-------
170
(1 row)
real 0m0.234s
user 0m0.000s
sys 0m0.010s
Maybe EXISTS is not always faster than IN ?
After a "vacuum analyze" the numbers become:
#using EXISTS
real 0m3.229s
user 0m0.000s
sys 0m0.000s
#using IN
real 0m0.141s
user 0m0.000s
sys 0m0.000s
Jc
From | Date | Subject | |
---|---|---|---|
Next Message | Jean-Christian Imbeault | 2002-09-19 09:47:12 | Re: datetime(): Where is it in the docs? |
Previous Message | Jean-Christian Imbeault | 2002-09-19 09:33:36 | Deadlock error!? |