記一次簡單的sql優化

2021-10-18 18:52:23 字數 1347 閱讀 7273

統計報警點位所屬裝置的裝置報警總數top100的裝置的報警總數

需要先找出所有裝置的報警次數,按照報警次數進行排序,取前100,然後再對前100的裝置的報警次數進行統計

將報警次數top100的裝置找出來,再對整個資料進行乙個inner join,再疊加乙個count。可以計算出

select count(1)

from

(select substring_index(alarm_description,

" ",1) siad,id,alarm_description from equipment_history_alarm_record where gc_id='ahaqwy' and substring(alarm_time,1,10)>='2020-01-01' and substring(alarm_time,1,10)

) t1

inner join

(select substring_index(alarm_description,

" ",1) siad ,count(1) cnt from equipment_history_alarm_record where gc_id='ahaqwy' and substring(alarm_time,1,10)>='2020-01-01' and substring(alarm_time,1,10)

group by siad order by cnt desc limit 100) t2

on t1.siad=t2.siad;

計算時間為1.733s

將報警次數top100的裝置找出來,將其作為主表,再對這個主表進行sum運算

select sum(t.cnt)

from

(select substring_index(alarm_description,

" ",1) siad ,count(1) cnt from equipment_history_alarm_record where gc_id='ahaqwy' and substring(alarm_time,1,10)>='2020-01-01' and substring(alarm_time,1,10)

group by siad order by cnt desc limit 100) t;

計算時間為0.867秒

記一次SQL優化

問題發生在關聯主表a 4w資料量 和副表b 4w資料量 關聯欄位都是openid 當時用的是 left join 直接跑sql,卡死 伺服器也是差 優化1 改left join 為join,兩者區別就是left join查詢時已主表為依據,該是幾條就幾條 就算副表沒有關聯的資料 join如果副表沒有...

一次簡單的SQL語句優化

最近寫了乙個查詢語句,為了做這個查詢建立了一些view,最終的view中包含了另外兩個view。這個sql的查詢要傳入乙個條件語句,最後發現這個sql語句會隨著資料量的增加而越來越耗時。即使為所有可以建立索引的地方都已經建立了索引也沒有用。用explain解釋之後發現這個語句在執行其中的子查詢時是查...

記一次sql查詢

效果圖 要查詢出如上圖的效果 知識點.1.多表巢狀查詢.2.輸出查詢結果,group concat函式 3.關聯查詢 select t1.學校,case when t1.年級 2017 then 1年級 when t1.年級 2016 then 2年級 when t1.年級 2015 then 3年...