> > The results are profound. Queries that used to scan tables because of the
> OK, I have an idea. Just today, we allow:
>
> select *
> from tab1
> where val in (
> select x from tab2
> union
> select y from tab3
> )
>
> How about if instead of doing:
>
> select * from tab1 where val = 3
> union
> select * from tab1 where val = 4
> ...
>
> you change it to:
>
> select * from tab1 where val in (
> select 3
> union
> select 4
> )
OK, I just ran some test, and it does not look good:
---------------------------------------------------------------------------
son_db=> explain select mmatter from matter where mmatter = 'A01-001';
NOTICE: QUERY PLAN:
Index Scan using i_matt2 on matter (cost=2.05 size=1 width=12)
EXPLAIN
son_db=> explain select mmatter from matter where mmatter in (select 'A01-001');
NOTICE: QUERY PLAN:
Seq Scan on matter (cost=512.20 size=1001 width=12)
SubPlan
-> Result (cost=0.00 size=0 width=0)
EXPLAIN
---------------------------------------------------------------------------
Turns out indexes are not used in outer queries of subselects. Not sure
why. Vadim?
--
Bruce Momjian | 830 Blythe Avenue
maillist@candle.pha.pa.us | Drexel Hill, Pennsylvania 19026
+ If your life is a hard drive, | (610) 353-9879(w)
+ Christ can be your backup. | (610) 853-3000(h)