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