問題發生在關聯主表a(4w資料量)和副表b(4w資料量)。關聯欄位都是openid 當時用的是 left join
直接跑sql,卡死(伺服器也是差…)
優化1:
改left join 為join,兩者區別就是left join查詢時已主表為依據,該是幾條就幾條(就算副表沒有關聯的資料),join如果副表沒有資料的話,主表的這條與之關聯的資料也不會輸出。相比下join效率高些。如果不是特別要求,一般用join即可。
優化2:
效果最明顯,也最簡單直接。將ab2個表的openid欄位都設定為索引(普通索引即可)
記一次簡單的sql優化
統計報警點位所屬裝置的裝置報警總數top100的裝置的報警總數 需要先找出所有裝置的報警次數,按照報警次數進行排序,取前100,然後再對前100的裝置的報警次數進行統計 將報警次數top100的裝置找出來,再對整個資料進行乙個inner join,再疊加乙個count。可以計算出 select co...
記一次sql查詢
效果圖 要查詢出如上圖的效果 知識點.1.多表巢狀查詢.2.輸出查詢結果,group concat函式 3.關聯查詢 select t1.學校,case when t1.年級 2017 then 1年級 when t1.年級 2016 then 2年級 when t1.年級 2015 then 3年...
記一次oracle 優化過程
可能很多大牛都知道這個方法,但我是頭回遇到,因為專案原因,要寫很多查詢sql,對速度有要求,所以很注重sql語句的優化。像使用left join 速度會快一些等等一些算是比較常見的方法吧。近兩天做自測時發現了乙個問題,同樣一條語句,加了乙個條件竟然速度慢了那麼多,本身是乙個求彙總的sql語句,查全部...