select null,s1.x_partner_bureau,count(1) r from (
select req3.sr_num,req3.created,req3.sr_stat_id, req2.x_owner_dept,req4.x_partner_bureau
from temp_v_SR_HIS req2,temp_v_srv_req req3,temp_v_org_ext req4,
(
SELECT * FROM
(SELECT a.row_id, ROW_NUMBER() OVER(PARTITION BY a.par_row_id ORDER BY a.created ) RN
FROM (select s2.row_id,s2.par_row_id,s2.created
from temp_v_SRV_REQ s1,temp_v_SR_HIS s2
where s2.X_ACT_STR_TIME >=trunc(sysdate) and s2.X_ACT_STR_TIME<=trunc(sysdate+1)-1/24/60/60 //注釋
and s1.x_sr_category='投訴'
and s1.row_id=s2.par_row_id
and s2.x_old_value='https://bbs.csdn.net/topics/待處理'
group by s2.par_row_id,s2.row_id,s2.created
) a
) WHERE RN = 1) req1
where req2.row_id=req1.row_id
and req3.row_id=req2.par_row_id
and req2.x_owner_dept = req4.name
and req4.int_org_flg='Y') s1 group by s1.x_partner_bureau order by count(1) desc
這個SQL查詢要100秒左右,
上面注釋的這一行如果把s2.X_ACT_STR_TIME這個時間欄位換成s1.ACT_OPEN_DT(也是時間欄位),查詢是秒查詢
而S1和S2里面的資料量差不多,
求大神解決如何優化SQL
uj5u.com熱心網友回復:
把你的S2先做子查詢,篩選一下資料,再關聯呢?uj5u.com熱心網友回復:
二者的索引情況呢,是否都存在索引,是否都有最新的統計分析資訊查看二者的執行計劃有何差異
uj5u.com熱心網友回復:
把s2子查詢速度還是很慢uj5u.com熱心網友回復:
最好附上執行計劃uj5u.com熱心網友回復:
你要把執行計劃貼出來呀,不然沒法看的,一般sql執行慢,都是索引的問題。合理的創建索引有助于sql的性能提升哦
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/103507.html
標籤:開發
