SQL調優真實案例
select a.user_code,
case
when b.aa is null then
0
else
b.aa
end valuecount
from (select cu.user_code
from crm_user_role r, crm_user cu
where r.user_id = cu.user_id
and r.role_id = 'role8687e756117248a4a264ea2758769d25'
and cu.user_code in ('1015',
'1017',
'1021',
'1025',
'1030',
'1031',
'1032',
'1033')) a,
(select t.act_user_code, count(*) aa
from crm_campaign_log t
where t.act_user_code in ('1015',
'1017',
'1021',
'1025',
'1030',
'1031',
'1032',
'1033')
and t.log_property = '2'
and trunc(t.operate_time) >= trunc(sysdate)
group by t.act_user_code) b
where a.user_code = b.act_user_code(+)
order by valuecount
語句分析:
原SQL語句的執行計劃如下:執行的時間大約是5秒鐘。Cost需要49014.消耗較多的CPU資源。改進建議:修where條件中的trunc(t.operate_time) >= trunc(sysdate)改為t.operate_time >= to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')
select a.user_code,
case
when b.aa is null then
0
else
b.aa
end valuecount
from (select cu.user_code
from crm_user_role r, crm_user cu
where r.user_id = cu.user_id
and r.role_id = 'role8687e756117248a4a264ea2758769d25'
and cu.user_code in ('1015',
'1017',
'1021',
'1025',
'1030',
'1031',
'1032',
'1033')) a,
(select t.act_user_code, count(*) aa
from crm_campaign_log t
where t.act_user_code in ('1015',
'1017',
'1021',
'1025',
'1030',
'1031',
'1032',
'1033')
and t.log_property = '2'
and t.operate_time >= to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')
group by t.act_user_code) b
where a.user_code = b.act_user_code(+)
order by valuecount
修改後的SQL語句執行計劃如下:
修改後的語句由原來的執行時間5秒鐘減少為0.05秒,cost 有原來的49014 減少到24.
原因是trunc(sysdate)函式把時間轉成了字串,字串比較時是從左到右逐個位元組進行比較,消耗較多CPU資源。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12798004/viewspace-1425333/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SQL Server一次SQL調優案例SQLServer
- 生產系統pl/sql調優案例SQL
- MySQL調優篇 | SQL調優實戰(5)MySql
- SQL調優SQL
- TiDB SQL調優案例之避免TiFlash幫倒忙TiDBSQL
- sql調優1SQL
- oracle sql調優OracleSQL
- 效能優化案例-SQL優化優化SQL
- Teradata SQL調優SQL
- MySQL SQL優化案例(一)MySql優化
- SQL效能優化案例分析SQL優化
- SQL優化提升效能 真實體驗屌絲變土豪SQL優化
- 使用SQL Profile進行SQL優化案例SQL優化
- Oracle效能優化-SQL優化(案例一)Oracle優化SQL
- Oracle效能優化-SQL優化(案例二)Oracle優化SQL
- Oracle效能優化-SQL優化(案例三)Oracle優化SQL
- Oracle效能優化-SQL優化(案例四)Oracle優化SQL
- MySQL索引和SQL調優MySql索引
- SQL效能調優綜述SQL
- [精華zt] SQL調優整理SQL
- SQL優化案例-union代替or(九)SQL優化
- greenplum 簡單sql優化案例SQL優化
- 記一個SQL優化案例SQL優化
- 真實世界SQL最佳化案例2_訪問路徑最佳化SQL
- SQL 調優一般思路SQL
- 【sql調優】動態取樣SQL
- 一條大sql的調優SQL
- 效能調優——SQL最佳化SQL
- 某公司oracle 效能調優診斷案例Oracle
- Oracle SQL調優系列之SQL Monitor ReportOracleSQL
- sql語句的優化案例分析SQL優化
- SQL優化案例-使用with as優化Subquery Unnesting(七)SQL優化
- SQL Server調優實戰 亂建聚集索引的後果SQLServer索引
- 數倉調優實戰:GUC引數調優
- MySQL 索引和 SQL 調優總結MySql索引
- Oracle SQL調優之分割槽表OracleSQL
- SQL調優13連問,收藏好!SQL
- delete相關的pl/sql調優deleteSQL