Java 一个DB视图的输出速度慢和提高的原因是什么?它需要6秒,突然需要1.5秒?

Java 一个DB视图的输出速度慢和提高的原因是什么?它需要6秒,突然需要1.5秒?,java,sql,oracle,wildfly,database-view,Java,Sql,Oracle,Wildfly,Database View,我有一个Oracle视图,具有以下条件: CREATE OR REPLACE FORCE EDITIONABLE VIEW ..... . . select * from (select t1.*,(select t.enddate from (select enddate,empid, ROW_NUMBER() OVER (PARTITION BY empid ORDER BY enddate desc) as seqnum from employee t2 where t2.

我有一个Oracle视图,具有以下条件:

CREATE OR REPLACE FORCE EDITIONABLE VIEW .....
.
.
select *  from 
(select t1.*,(select t.enddate from (select enddate,empid,
  ROW_NUMBER() OVER (PARTITION BY empid ORDER BY enddate desc) as seqnum
  from employee t2
  where t2.empid=t1.empid) t
   where seqnum=1)  As enddate_1 from (select * from
(select WED.*,ROW_NUMBER() OVER (PARTITION BY empid ORDER BY startdate desc) as seqnum from 
(select t1.*,COUNT(*) OVER (PARTITION BY empid) WDECOUNT from employee t1) WED
where WDECOUNT=1 or WED.startdate <= sysdate)) t1 WHERE seqnum=1);

Oracle Database 12c 12.1.0.1.0版-64位生产版

,就像在大海捞针一样。这里有很多选项,但是如果你问我,我会尝试查看上次数据库中的自动收集统计过程是何时执行的

可能,视图中涉及的表有了新的统计信息,CBO现在有了更好的执行计划,可能是更好的基数估计导致了新的计划

使用AWR检查过去7天视图的执行计划

SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR('your_sql_id'));
也许您现在可以在AWR上为同一个SQL存储两个不同的计划


值得一试。但就像我说的,有很多选择。我要告诉你的是提高性能最常见的方法之一。

不要交叉发布-如果你获得使用ASH和AWR(dba_hist___视图和v$active_session_历史)的许可,你可以检查计划是否已更改。这始终是我检查的第一件事。得到的信息表明,查询在环境中略有变化。谢谢
SELECT * FROM table(DBMS_XPLAN.DISPLAY_AWR('your_sql_id'));