When EXPLAIN can be misleading
原文见:http://www.mysqlperformanceblog.com/2006/11/12/when-explain-can-be-misleading/
(1)explain当估计行数时,不考虑limit,因此可能会对查询估计过多的检查行数
(2)类似于SELECT ... FROM TBL LIMIT N这样的全表扫描的查询因为用不到索引将要报告为慢查询,如果--log-queries-not-using-indexes被开启的话;可以在配置文件中使用min-examined-row-limit=Num of Rows来设置,如果要检查的行数大于等于这个量的查询才会被报告为慢查询
(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约束