对于低效的查询:
1、确认程序是否在检索大量超过需要的数据
2、确认mysql服务器层是否在分析大量超过需要的数据行
MySQL是否在扫描额外的记录
最简单的很亮查询开销的三个指标:
响应时间、扫描的行数、返回行数
这3个指标会记录到MySQL慢查询日志中,所以检查慢查询日志是找出扫描行数过多的查询的好办法。
在explain
语句中的type
列反应了访问类型:
全表扫描、索引扫描、范围扫描、唯一索引扫描、常数引用...
速度是从慢到快,扫描的行数也是从小到大。
一般MySQL能够使用如下三种方式应用where条件,从好到坏依次为:
1、在索引中使用where条件来过滤不匹配的记录
2、在Extar列中出现了Using index
3、在Extar列中出现了Using where