MySQL 執行很慢,怎么辦?


一條 SQL 執行很慢的原因

分兩種情況,

  1. 大多數時候正常,偶爾很慢。
    原因可能是,MySQL 后台線程在刷臟頁。
  2. 一直很慢。
    原因可能是,沒用索引,或者加了索引,但索引失效,
    又或者 MySQL 優化器選錯索引,可以使用 use index 來指定索引

那如何優化 MySQL 呢?

從表、索引、SQL 和參數四個維度來優化。

表優化

  • 首先,盡量選擇小的數據類型,處理更快。
  • 其次,要適當增加冗余字段,減少多表查詢,以空間換時間。
  • 最后,如果單表數據量過大,就要考慮分庫分表

索引優化

  • 首先,要擅用,比如為經常作為查詢條件的字段創建索引,為不重復的字段創建唯一索引。
  • 其次,不能濫用,像性別這樣唯一性很差的字段,就不適合創建索引。
  • 最后,可以適當使用覆蓋索引和前綴索引。覆蓋索引能減少回表次數,
    前綴索引用子串作為索引,能節省空間,但是就用不上覆蓋索引。

SQL 優化

  • 首先,可通過慢查詢日志發現需要優化的 SQL 語句,然后使用 Explain 分析語句的執行計划。
  • 其次,要盡量避免使用 select *,而是指定具體的字段。
  • 最后,MySQL 優化器可能選錯索引,可以使用 use index 來指定索引

參數優化

可以增大 redo log buffer 的大小,來減少寫回磁盤的 IO 操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM