繁体   English   中英

自连接 SQL 执行时间过长

[英]Self join SQL is taking too much time to execute

下面的 SQL 执行时间太长。不知道哪里做错了,但是得到了正确的结果。我可以进一步简化这个 sql。 这是 oracle db 和 jmc_job_step 表包含大量记录。

select *
 from
        jmc_job_run_id jobrunid0_ 
    inner join
        jmc_job_step jobsteps1_ 
            on jobrunid0_.id=jobsteps1_.job_run_id
    where
        (
            jobsteps1_.creation_date in (
                select
                    min(jobstep2_.creation_date) 
                from
                    jmc_job_step jobstep2_ 
                where
                    jobrunid0_.id=jobstep2_.job_run_id 
                group by
                    jobstep2_.job_run_id ,
                    jobstep2_.job_step_no
            ) 

            )
            or jobsteps1_.job_step_progress_value in (
                select
                    max(jobstep3_.job_step_progress_value) 
                from
                    jmc_job_step jobstep3_ 
                where
                    jobrunid0_.id=jobstep3_.job_run_id 
                group by
                    jobstep3_.job_run_id ,
                    jobstep3_.job_step_no
            )
        ) 
    order by
        jobrunid0_.job_start_time desc

这是没用的; 它说“我不在乎这些列包含什么”,但是 - 无论如何 - 你让数据库引擎检查这些值。

    (
        upper(jobrunid0_.tenant_id) like '%'|| null
    ) 
    and (
       upper(jobrunid0_.job_run_id) like '%'||null||'%'
    ) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM