MYSQL索引優化建議

1、索引失效

1.1 基本原則

  1. 全值匹配我最愛
  2. 最佳左前綴法則,對於多列索引,查詢從最左前列開始,不跳過索引中的列
  3. 不在索引列上做任何操作,計算、函數、自動/手動類型轉換),否則會導致索引失效導致全表掃描
  4. 存儲引擎不能使用索引中範圍條件右邊的列
  5. 儘量使用覆蓋索引(只訪問索引的查詢(索引列和查詢列一致)),減少select *
  6. mysql在使用不等於(!=或者<>)的時候無法使用索引
  7. is null,is not null也無法使用索引
  8. like 以通配符開頭(‘%abc…’)mysql索引失效會變成全表掃描的操作,如果非要使用’%…%'類型,可以採用索引覆蓋,這樣不會掃描全表,可以使用到索引
  9. 字符串不加單引號索引失效
  10. 少用or,用它來連接時會索引失效

2、慢查詢日誌

通過set slow_query_log=1 和slow_query_log_file=…file,開啓慢查詢後,可以通過設置long_query_time來指定慢查詢閾值,找到那些查詢比較慢的SQL進行分析

3、profiling

一般來說,通過觀察、構建索引以及explain分析之後的能滿足大多數的優化條件,但是,有些時候也需要服務器做一些調整,比如對於那些無法構建索引的,可以適當調整join buffer的大小。
當然通過set profiling=1開啓之後,可看到所有的SQL語句都會被記錄到profiles中,然後對於每一條SQL,通過select * from query id 可以看到該查詢的詳細資源使用情況然後做出相應的分析

4、普通日誌

通過開啓general_log=1,也是可以看到每一條SQL的執行,然後記錄到mysql.general_log表中,生產環境一般不建議這樣用

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章