亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sql 優化

sql 優化

素胚勾勒不出你 2018-12-07 10:54:33
請高手解決... sql 優化問題。 ? SELECT formResourceName,t.id, p.workflow_name workflowName,p.workflow_type workflowType,p.process_definition_id processDefinitionId ,i.process_instance_id processInstanceId,i.create_time processInstanceCreateTime,i.orderId,i.author,i.author_name authorName,i.flag processInstanceFlag ,t.task_id taskId,t.handle_time handleTime, (case when handle_result='0' then '不通過' when handle_result='1' then '通過' when handle_result='2' then '創建' when handle_result='3' then '撤回' else '通過' end) as handleResult, handle_comments handleComment ,t.handler ,t.handler_name handlerName from workflow_trans t left join workflow_instance i on t.process_instance_id=i.process_instance_id left join workflow_template p on i.process_definition_id=p.process_definition_id WHERE i.status<>'DELETE' AND t.id IN (SELECT max(id) FROM workflow_trans GROUP BY process_instance_id,formResourceName) -- 這里排除重復數據 ? 用id in? 數據很慢。 如何優化?
查看完整描述

4 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

我目前處理SQL中in的方法就是 將in換成EXISTS

例如

select c from T1 where id1 In( select id2 from T2 )

修改為

select c from T1 where id1?exists (select 1 from t2 where id1=id2)

查看完整回答
反對 回復 2019-01-07
?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

可以再join一次嘛。把in 改為join

查看完整回答
反對 回復 2019-01-07
?
慕碼人2483693

TA貢獻1860條經驗 獲得超9個贊

SQL文本身優化來看,有兩點優化:

1.使用 exists 替換 in

2.workflow_instance 表對status創建索引

原因:

in 及 <> 都屬于Scan掃描,這樣假設數據量較大時,執行效率很低。

查看完整回答
反對 回復 2019-01-07
  • 4 回答
  • 0 關注
  • 570 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號