Re: WHERE clause OR vs IN

Поиск
Список
Период
Сортировка
От Medi Montaseri
Тема Re: WHERE clause OR vs IN
Дата
Msg-id 8078a1730712121827r76b20341o4b1cbb96eb05120c@mail.gmail.com
обсуждение исходный текст
Ответ на Re: WHERE clause OR vs IN  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-admin
Thanks everyone, and I know I am taking too much bandwidth, but...

The reason I was thinking IN would work better is that from a parser point of view confronted with a series of expressions chained via boolean operators such as
expr OR expr OR expr
The back end code generated has to be generic to combat with different type of expression such as equality, greater than, less than, or any fancy expressions. For example:
a == b OR c != d  AND e > f OR g == h
Where as in the case of
a IN (1, 2, 3, 4)
is actually a subset of the above composite expression because
1- the expressions are always equality of operand a with a literal value which means the operand can be cached (register)
2- the composite expression is always an OR chained expression where the first TRUE-ness would return the composite as TRUE (aka short circuit behavior)

I could be wrong...I have been wrong before...

Medi


On Dec 12, 2007 5:03 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Richard Broersma Jr <rabroersma@yahoo.com> writes:
> --- On Wed, 12/12/07, Medi Montaseri <montaseri@gmail.com > wrote:
>> based on your report, run time of OR is 0.275 ms and IN is
>> 0.314
>>
> postgres=# explain analyze select * from tellers where
>> bid in ('1','2');

> Two other options are:

> SELECT *
>   FROM Tellers
>  WHERE bin = ANY( '1', '2' );

Note that depending on which PG version you are testing, x IN (a,b,c)
is exactly equivalent to x=a OR x=b OR x=c (older versions), or to
x = ANY(ARRAYa,b,c]) (newer versions).

>     SELECT T.*
>       FROM Tellers AS T
> INNER JOIN ( VALUES ( '1' ), ( '2' ) ) AS B( bin )
>         ON T.bin = B.bin;

I seriously doubt that one's gonna win ...

                       regards, tom lane

В списке pgsql-admin по дате отправления:

Предыдущее
От: Paul Lambert
Дата:
Сообщение: Schema security
Следующее
От: "Rodrigo De León"
Дата:
Сообщение: Re: Schema security