SQL查询优化
explain select
extra
using filesort:排序时无法使用到索引时,就会出现这个。常见于order by和group by语句中
using temporary:表示使用了临时表存储中间结果。临时表可以是内存临时表和磁盘临时表,执行计划中看不出来,需要查看status变量,used_tmp_table,used_tmp_disk_table才能看出来。
using index:查询时不需要回表查询,直接通过索引就可以获取查询的数据。
using where:表示存储引擎返回的记录并不是所有的都满足查询条件,需要在server层进行过滤。
有的又说使用了索引但需要回表查询。
同Using index condition?
打开慢查询
命令 SHOW VARIABLES LIKE '%query%' 打开log_slow_query
通过查看慢查询日志来发现查询慢的语句,再进行优化。
-- 避免使用!= 和 <>-- 避免使用or连接,尝试用union all-- 慎用in 能用between就不要用in
