Search Postgresql Archives

Push predicate down in view containing window function

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

 



Hello,
Using postgres 9.1.9, I have a view that uses a window function. I then query that view with a predicate on one of the columns. Unfortunately, the predicate doesn't get pushed down into the view.
Given that the predicate applies to a column that's being partitionned on, why wouldn't the optimizer push the predicate down ?


create table test_table (col1 text,col2 text);
insert into test_table values ('a','a2');
insert into test_table values ('b','b2');

create or replace view test_view as
select
col1,col2,lead(col2) over w
from test_table
WINDOW w AS (partition by col1 order by col2) 
;

BAD (query through view)
public=# explain select * from test_view where col1='a';
                                   QUERY PLAN                                   
--------------------------------------------------------------------------------
 Subquery Scan on test_view  (cost=60.52..88.47 rows=4 width=96)
   Filter: (test_view.col1 = 'a'::text)
   ->  WindowAgg  (cost=60.52..77.72 rows=860 width=64)
         ->  Sort  (cost=60.52..62.67 rows=860 width=64)
               Sort Key: test_table.col1, test_table.col2
               ->  Seq Scan on test_table  (cost=0.00..18.60 rows=860 width=64)


GOOD (direct query)
public=# explain select
col1,col2,lead(col2) over w
from test_table
where col1='a'
WINDOW w AS (partition by col1 order by col2) 
;
                               QUERY PLAN                               
------------------------------------------------------------------------
 WindowAgg  (cost=20.79..20.86 rows=4 width=64)
   ->  Sort  (cost=20.79..20.80 rows=4 width=64)
         Sort Key: col2
         ->  Seq Scan on test_table  (cost=0.00..20.75 rows=4 width=64)
               Filter: (col1 = 'a'::text)
(5 rows)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux