Bpazy / blog

我的博客,欢迎关注和讨论
https://github.com/Bpazy/blog/issues
MIT License
39 stars 2 forks source link

MySQL 之慢查案例 #297

Open Bpazy opened 1 year ago

Bpazy commented 1 year ago

记录一些典型的慢查案例。

百度搜了个排查步骤,也算不赖:

  1. 判断运行时是否真的很慢;
  2. 定位性能瓶颈(是因为在数据访问消耗了太多的时间,还是在数据的运算(如分组排序等)方面花费了太多资源);
  3. 采用where条件进行查询,对每个字段分别查询,看哪个字段的区分度最高;
  4. explain查看执行计划;
  5. 了解业务方使用场景;
  6. 根据需求对索引进行新增或修改,参照建索引规约和索引优化的原则;
  7. 观察结果,不符合预期继续从第一步开始分析。

索引的一些关键指标:

  1. 分离度。索引列里的数据重复率越低越好;
  2. 选择合适的索引类型。选择索引类型要根据字段的特性合查询方式来判断。一般来说,对于主键用B+树索引。对于超长的字符串采用hash索引,对于范围查询合排序用B+树索引等。
  3. 避免冗余索引。创建一个字段的多个索引,而且这些索引前缀都是相同的,这样的索引是冗余的,占用空间。
Bpazy commented 1 year ago

limit 导致的慢 SQL

优化器相关

Refer: limit 导致的慢 SQL #289