Re: IN vs EXIIST
От | Jean-Christian Imbeault |
---|---|
Тема | Re: IN vs EXIIST |
Дата | |
Msg-id | 3D899AB8.4070304@mega-bucks.co.jp обсуждение исходный текст |
Ответ на | IN vs EXIIST (Jean-Christian Imbeault <jc@mega-bucks.co.jp>) |
Ответы |
Re: IN vs EXIIST
Re: IN vs EXIIST |
Список | 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
В списке pgsql-general по дате отправления: