慢SQL優化 索引優化

2021-10-25 10:36:21 字數 697 閱讀 4911

在專案開發的時候難免會寫一些sql語句,剛開始資料量比較小或沒預料到資料的增長速度很快,在後期的維護中偶爾會有慢sql出現,嚴重的會影響到線上服務正常執行和使用者體驗。當然慢sql的優化角度有多種,比如增/減索引、調整搜尋條件的順序、優化查詢結果引數、分庫分表、讀寫分離等等,但本篇我們主要談一下索引優化的方法和套路。

建立索引是資料庫查詢優化的最重要手段之一,當我們遇到慢sql情況時,應當優先考慮和分析是不是可以通過優化資料庫表的索引結構來解決問題;

這裡我們假設表1中有乙個聯合索引(idx_a_b_c),該聯合索引是由3個字段組合而成,那麼我們在操作表1進行查詢時,怎麼才能最優化的使用索引,或者怎麼避免索引不起作用呢?

3、範圍查詢右邊的列,不會使用索引;

4、查詢欄位有運算操作時,不會使用索引;

5、字串查詢時,如果不加單引號,則不會使用索引;(這是由於mysql的查詢優化器會進行自動型別轉換,型別變了,導致索引失效)

6、查詢的字段盡量都是建立索引列欄位;

7、盡量避免使用"or"語句連線查詢;

8、避免使用%作為模糊查詢的開頭,否則會引起索引失效;

9、查詢語句中如果要對某個字段進行有限範圍查詢時可以使用in語句,in語句查詢走索引;而not in語句則不走索引;

10、建立索引的字段應有區分度,否則有可能索引失效;

這是由於如果mysql的優化器發現使用索引比全部掃瞄更慢時,就不會走索引;

SQL優化 索引優化

一 發現哪些sql語句有效能問題 開啟mysql慢查詢日誌對sql語句進行監控 show variables like slow query log 檢視是否開啟慢查詢日誌 set global slow query log on 開啟慢查詢日誌 set global log queries not...

SQL慢查詢優化

3月19日,3月20日的18 00 20 00之間,db伺服器的cpu load飆公升 dba提出問題原因是sql where rest id and state and id and valid 掃瞄行數太多,執行時間過長 在b端心跳連線時,會傳 queue marker 引數,含義為上次處理的最...

sql查詢慢優化

select g.goods id,g.type id,g.user id,g.productname,g.img,g.intro,g.attr,u.companyname,u.enloginname,u.userid from site goods g force,ucenter member u...