执行时间长 等待时间长

1 查询数据过多

能不能拆,条件过滤尽量少

2 关联了太多的表,太多join

join 原理。用A表的每一条数据扫描B表的所有数据。所以尽量先过滤。

3 没有利用到索引

  • 单值索引
  • 复合索引:条件多时,可以建共同索引(复合索引)。复合索引一般会优先使用,有些情况下,就算有索引具体执行时也不会被使用。

ABB8BE73-9B74-4450-BEC4-880A4C09FE6F.png

索引针对 列 建索引。但并不可能每一列都建索引,索引并非越多越好。当数据更新了,索引会进行调整。也会很消耗性能,, MySQL 并不会把所有索引都用上,只会根据其算法挑一个索引用。所以建的准很重要。

4 服务器调优及各个参数设置

缓冲、线程数等(不重要,DBA的工作)