Re: WHERE clause OR vs IN

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Wed, 12 Dec 2007 14:25:16 -0800
"Medi Montaseri" <montaseri@xxxxxxxxx> wrote:

> Hi,
> 
> I know this is not exactly admin related, but ... it is simple enough
> to be even fun
> 
> From a performance point of view, is it better to use OR as in
> SELECT expr FROM expr WHERE col=this OR col=that OR col=theOther
> Or to use a range of values as in
> SELECT expr FROM expr WHERE col in ( val1, val2, ...., valn)
> 
> I think the IN range yields a better query plan .... what do you
> think ? Thanks

Well a simple test:

postgres=# explain analyze select * from tellers where bid in ('1','2');
                                              QUERY
PLAN
- ------------------------------------------------------------------------------------------------------
Seq Scan on tellers  (cost=0.00..10.25 rows=20 width=352) (actual
time=0.019..0.192 rows=20 loops=1) Filter: (bid = ANY
('{1,2}'::integer[])) Total runtime: 0.314 ms (3 rows)

postgres=# explain analyze select * from tellers where bid = '1' or bid
= '2'; QUERY PLAN                                              
- ------------------------------------------------------------------------------------------------------
 Seq Scan on tellers  (cost=0.00..11.50 rows=20 width=352) (actual
time=0.018..0.199 rows=20 loops=1) Filter: ((bid = 1) OR (bid = 2))
 Total runtime: 0.275 ms
(3 rows)

postgres=# 



> Medi


- -- 
The PostgreSQL Company: Since 1997, http://www.commandprompt.com/ 
Sales/Support: +1.503.667.4564   24x7/Emergency: +1.800.492.2240
Donate to the PostgreSQL Project: http://www.postgresql.org/about/donate
SELECT 'Training', 'Consulting' FROM vendor WHERE name = 'CMD'


-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFHYGJwATb/zqfZUUQRAs32AJ9HuJVcY5gcr0hboxkI6PcRtv++JwCfXd00
nQ7Frkof0mVwqNYVxQ9Vziw=
=XzJi
-----END PGP SIGNATURE-----

---------------------------(end of broadcast)---------------------------TIP 3: Have you checked our extensive FAQ?
               http://www.postgresql.org/docs/faq

[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux