Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle是否可以使用分析函数分区使用谓词推送查询?_Sql_Oracle_View - Fatal编程技术网

Sql Oracle是否可以使用分析函数分区使用谓词推送查询?

Sql Oracle是否可以使用分析函数分区使用谓词推送查询?,sql,oracle,view,Sql,Oracle,View,下面是一个名为MANVW的示例视图: SELECT manager_id, manager_sign FROM ( SELECT manager_id, manager_sign, effdt MAX(effdt) OVER (PARTITION BY manager_id) AS max_dt FROM managers) WHERE effdt = max_dt; 我的问题是: SELECT * from MANVW where manager_sign = 'ABC'; 不

下面是一个名为
MANVW
的示例视图:

SELECT manager_id, manager_sign
FROM (
  SELECT manager_id, manager_sign, effdt
  MAX(effdt) OVER (PARTITION BY manager_id) AS max_dt
  FROM managers)
WHERE effdt = max_dt;
我的问题是:

SELECT * from MANVW where manager_sign = 'ABC';
不幸的是,当我查询此视图时,它会构建整个内联视图(分析函数所在的位置),并且不使用
manager\u sign
上的索引

如果我对
MANVW
使用嵌套select,它确实使用索引:

SELECT m.manager_id, m.manager_sign
FROM managers m
where m.effdt = (select max(mi.effdt) from managers mi where mi.manager_id = m.manger_id)
取舍是,使用分析函数可以快速检索视图中的所有记录,但如果仅检索由索引列过滤的记录的子集,则检索速度较慢。我希望分析函数使用谓词推送,这样在使用这种方法时会很快


有没有可能有一个视图使用分析函数,并在可能的情况下推送谓词?

我想我在提出问题之前没有搜索足够长的时间,因为有人已经向Tom提出了完全相同的问题: