簡體   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