mysql 慢查询 定位过程,和order by有关
生活随笔
收集整理的這篇文章主要介紹了
mysql 慢查询 定位过程,和order by有关
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近有同事反饋mysql 主備同步告警超時比較多,首先使用
show processlist;看了下,有很多查詢語句狀態顯示Sending data,網上查閱了相關資料,提示"Sending data" 狀態是指mysql處理結果并回傳給客戶端的階段。查詢語句大概長這樣
select * from table where t1 <= now() and t2 >= now() and v1 = 0 and v2 = 1 order by id asc limit 100?使用explain 命令看了下這條語句,顯示使用了主鍵索引,我覺得這里主鍵索引主要用在order by里面排序,根據業務邏輯看了下,這里排序是沒有必要的,于是去掉了order by id asc,重新explain 了一下,使用了t1和t2聯合索引,查詢速度也從原來0.7s降到了0.18s,降了大概75%。效果還是挺明顯。
對于類似的問題,分析思路大概都是先看下語句卡在哪里,可以通過show processlist,然后對語句進行優化,使用explain查看使用到哪些索引等等。
?
================================================================================================
Linux應用程序、內核、驅動、后臺開發交流討論群(745510310),感興趣的同學可以加群討論、交流、資料查找等,前進的道路上,你不是一個人奧^_^。...
?
?
總結
以上是生活随笔為你收集整理的mysql 慢查询 定位过程,和order by有关的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux进程间通信六 Posix 共享
- 下一篇: 中文按拼音首字母排序的C++实现方案