index scan through a subquery

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

 



Why should these queries have different plans?


create table foo (a int PRIMARY KEY);

Q1: explain select max(a) from foo

> Result  (cost=0.04..0.05 rows=1 width=0)
>  InitPlan
>    ->  Limit  (cost=0.00..0.04 rows=1 width=4)
>          ->  Index Scan Backward using foo_pkey on foo
>  (cost=0.00..76.10 rows=2140 width=4)
>                Filter: (a IS NOT NULL)

Q2: explain select max(a) from (select * from foo) as f

> Aggregate  (cost=36.75..36.76 rows=1 width=4)
>  ->  Seq Scan on foo  (cost=0.00..31.40 rows=2140 width=4)


I need the lovely index scan, but my table is hidden behind a view, and
all I get is the ugly sequential scan.  Any ideas on how to convince the
optimizer to unfold the subquery properly?

Bill


[Postgresql General]     [Postgresql PHP]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Yosemite]

  Powered by Linux