问题分析:
1,explain当估计行数时,不考虑limit,因此可能会对查询估计过多的检查行数。
2,类似于SELECT ... FROM TBL LIMIT N这样的全表扫描的查询因为用不到索引将要报告为慢查询,如果--log-queries-not-using-indexes被开启的话;
可以在配置文件中使用min-examined-row-limit=Num of Rows来设置,如果要检查的行数大于等于这个量的查询,才会被报告为慢查询。
有关mysql慢查询的内容,可以参考:
mysql打开慢查询日志的方法
有关 mysql 慢查询日志
mysql开启慢查询实例演练(图文)
mysql开启慢查询日志的方法
MySQL 5.1.6以上版本动态开启慢查询日志的方法
mysql 慢查询的原因分析点滴
学习开启mysql慢查询与分析查询语句
mysql开启慢查询以检查查询慢的语句
3,类似于这样形式的SELECT ... FROM TBL WHERE KEY_PART1=CONST ORDER BY KEY_PART2 LIMIT N,mysql也要估计出过多的检查行数。
有关slow-query的一些参数:
log-slow-queries -- 开启慢查询
long_query_time=N -- 大于N秒的查询为慢查询,并且要满足min-examined-row-limit的要求
log-queries-not-using-indexes -- 记录不使用索引的为慢查询,并且要满足min-examined-row-limit的要求
min-examined-row-limit=N -- 要检查的行数大于等于N时才记录为慢查询,前提是必须满足long_query_time和log-queries-not-using-indexes约束
就介绍这些吧,希望对大家有所帮助。