Aşağıda bulduğum sorgu çok yavaş.Yazmak için daha iyi bir yaklaşım görünümü
Temel olarak, bu üç tabloya katılarak diğer bilgilerle birlikte her workflow_id öğesinin en son durumunu almaya çalışıyorum.
Sorgu mantığı şöyledir:
- Grup tablo toplu adımı iş yürütme id yürütme ve max (step_execution_id) kullanılarak son adımı alarak ve bunları daha sonra adım yürütme kimliği
- Grup tablo tarafından kullanan tüm sütunları alarak job_instance_id üzerinde batch_job_execution ve en son çalıştırmayı geri alın. İşte
SELECT workflow_id, collabration_key, TAB3.START_TIME AS WORKFLOWDATE, batch_step_execution.STEP_NAME AS CURRENT_STEP_NAME , batch_step_execution.EXIT_CODE AS CURRENTSTEP , batch_step_execution.start_time AS STEPTIME , TAB3.EXIT_CODE AS JOB_STATUS FROM batch_step_execution INNER JOIN ( SELECT * FROM rpx_id_mapping INNER JOIN ( SELECT batch_job_execution.job_execution_id, batch_job_execution.job_instance_id , batch_job_execution.START_TIME , batch_job_execution.EXIT_CODE FROM batch_job_execution WHERE batch_job_execution.job_execution_id IN ( SELECT MAX(job_execution_id) FROM batch_job_execution WHERE job_instance_id IN ( SELECT job_id FROM rpx_id_mapping ) GROUP BY job_instance_id ) ) TAB2 ON rpx_id_mapping.job_id = TAB2.job_instance_id ) TAB3 ON batch_step_execution.job_execution_id = TAB3.job_execution_id WHERE batch_step_execution.step_execution_id = ( SELECT MAX(step_execution_id) FROM batch_step_execution WHERE batch_step_execution.job_execution_id = TAB3.job_execution_id ) ) TAB4
geçerli:
- İç 1 katılıp 2 id haritalama tabloyla katılan son aşama
- son yürütme ve iş yürütme bakarak katılmak à
Bu benim şimdiki kodudur tablolar yapısı.
aynı ulaşmak için daha iyi bir yaklaşım var mı? masa toplu adımı iş yürütme id icra ve job_instance_id ve almak üzerine tablo batch_job_execution adım yürütme kimliği
Analitik sorgulara bakın; Aynı tablonun birden çok kez çarpmasını önlemek istiyorsanız, hepsini bir kez birleştirin ve daha sonra istediğiniz satırları bulmak için analitiği kullanın. Etrafta çok sayıda örnek var; [işte size dün gelen] (http://stackoverflow.com/q/36183914/266304) yanıtlarda size bir başlangıç noktası verebilecek bir kaç yaklaşımı vardır. –
@AlexPoole Aslında tüm tabloları her zaman vuracağız, sadece her şey, her satırda mutlaka tüm satırları kullanmamamız. – DevG
@AlexPoole Gerçekten analitik soruların daha iyi bir yaklaşım olacağını düşünmüyor musunuz? Bunu hiç kullanmadım. – DevG