實戰演練(二) 執行20小時的報表SQL優化後秒出

2021-08-30 15:23:46 字數 1144 閱讀 6033

一、概述

這是我們sql優化班的乙個學員,據說該sql在生產環境中已經執行了20個小時,快把伺服器的磁碟資源耗盡了。這20個小時,我們可愛的學員就是靠著刪除一些不重要的檔案才能夠勉強度過。 

據了解,該sql為乙個月執行一次的跑報表的sql,主要問題是隨著sql的執行時間越來越長,所需的臨時表空間也越來越大,導致磁碟資源用盡。

二、先看慢sql

●  sql 執行時長 ,目前已經20小時,還在繼續執行

select

count( * ) as totalnum,

sum( case when f.alarm_level = 1 then 1 else 0 end ) as levels1,

sum( case when f.alarm_level = 2 then 1 else 0 end ) as levels2,

sum( case when f.alarm_level = 3 then 1 else 0 end ) as levels3,

sum( case when f.deal_state = 0 then 1 else 0 end ) as dests

from

f

left join dc on dc.id = f.const_id

left join v on v.id = f.vehicle_id

left join area on area.id = v.sys_division_id

where

dc.id is not null

and v.id is not null

and f.deal_state = 0

and alarm_level in ( 1, 2, 3 )

and f.vehicle_id in (

select

二小時與四周時間在程式設計上的差別

本文是從 simplicity oriented programming 這篇文章翻譯而來。在warsztat 乙個波蘭的遊戲開發組織 工作的幾年中,我發現乙個有趣的現象。經常我們會組織一些程式設計競賽,這些競賽通常分為兩種形式。一種是個人行動,一般只有2個小時的時間,另外一種是長時間的 數天 周 ...

二小時與四周時間在程式設計上的差別

內容如下 在warsztat 乙個波蘭的遊戲開發組織 工作的幾年中,我發現乙個有趣的現象。經常我們會組織一些程式設計競賽,這些競賽通常分為兩種形式。一種是個人行動,一般只有2個小時的時間,另外一種是長時間的 數天 周 作為乙個額外的要求,前者通常限制只允許使用基本的api sdl,opengl等 而...

二小時與四周時間在程式設計上的差別

在warsztat 乙個波蘭的遊戲開發組織 工作的幾年中,我發現乙個有趣的現象。經常我們會組織一些程式設計競賽,這些競賽通常分為兩種形式。一種是個人行動,一般只有2個小時的時間,另外一種是長時間的 數天 周 作為乙個額外的要求,前者通常限制只允許使用基本的api sdl,opengl等 而後者通常沒...