Sql 查询使用rank()需要优化

Sql 查询使用rank()需要优化,sql,oracle,Sql,Oracle,我想不明确的条款可能会把演出搞砸。我建议您通过包含到partition by子句中来摆脱它,并查看您得到了什么。如果可以,请尝试使用 select * from ( Select DISTINCT DocManREPORT_View.DOCINPUTDATE, DocManREPORT_View.REACTIVATEDATE, DocManREPORT_View.TRACENO, DocManREPORT_View.CLIENTNAME, DocMa

我想不明确的条款可能会把演出搞砸。我建议您通过包含到partition by子句中来摆脱它,并查看您得到了什么。

如果可以,请尝试使用

select * from
(
  Select DISTINCT 
    DocManREPORT_View.DOCINPUTDATE,
    DocManREPORT_View.REACTIVATEDATE,
    DocManREPORT_View.TRACENO,
    DocManREPORT_View.CLIENTNAME,
    DocManREPORT_View.DOCUMENTID,DocManREPORT_View.BARCODEID,
    DocManREPORT_View.INPUTMODE,
    DocManREPORT_View.INPUTSOURCE,PI.start_time,
    RANK() OVER (PARTITION BY process_instance_id 
       ORDER BY last_modified_date desc) rank,
    PI.STATUS AS PROCESSSTATUS 
  FROM DocManREPORT_View 
  INNER JOIN PROCESS_INSTANCE PI ON 
    (pi.instance_id = DocManREPORT_View.process_instance_id)
) 
where rank = 1;

在视图内部,因为我知道视图中已经有了执行此步骤的所有数据。

您确定这是查询,它有两个“WHERE”子句吗?您似乎忘记了(somwhere.我假设之前WHERE RANK=1对于之前不正确的查询,我很抱歉。现在我已经编辑并添加了正确的查询。请您提供您的问题的详细信息,当前的问题是什么?例如,您有1000万行,它运行10分钟,但您需要1分钟。或者类似的内容会使问题更有价值。发生了什么如果删除
独立的
?似乎不需要它。视图中没有所有数据。还需要引用其他一些表上次修改的日期是从其他表中删除的?使用WITH子句具体化独立的部分可能会更好吗?
 RANK() OVER (PARTITION BY process_instance_id 
       ORDER BY last_modified_date desc) rank,