通过explain查看sql的执行计划时,Extra字段的值往往会看到Using where; Using index; Using temporary; Using filesort 一、using filesort 在使用order by关键字的时候,如果待排序的内容不能由所使用的索引直接完成排序的话,那么mysql有可能就要进行文件排序。 【这个 filesort 并不是说通过磁盘文件进行排序,而只是告...
| 1 | SIMPLE | t_blog | index | NULL | index_1 | 158 | NULL | 7 | Using index; Using temporary; Using filesort | +---+---+---+---+---+---+---+---+---+---+ 1 row in set 对一个有索引的字段进行分组就不会产生临时表: mysql> EXPLAIN select title from t_blog gr...
Using temporary(需要优化) 使了用临时表保存中间结果,MysQL在对查询结果排序时使用临时表。常见于排序order by和分组查询group by Using index(good) 表示相应的select操作中使用了覆盖索引(Covering Index),避免访问了表的数据行,效率不错! 情况一: 情况二: 覆盖索引 / 索引覆盖(Covering Index)。 理解方式一:就...
Extra是Using temporary说明,需要建立临时表(temporary table)来暂存中间结果。 这类SQL语句性能较低,往往也需要进行优化。 典型的,group by和order by同时存在,且作用于不同的字段时,就会建立临时表,以便计算出最终的结果集。 六、【Using join buffer (Block Nested Loop)】 实验语句: explain select * from use...
CREATEINDEXindex_table_id_nameONtable(id,name); 【索引失效场景】 在where子句中进行null值判断的话会导致引擎放弃索引而产生全表扫描 避免在where子句中使用 != ,< > 这样的符号,否则会导致引擎放弃索引而产生全表扫描 避免在where子句中使用or来连接条件,因为如果俩个字段中有一个没有索引的话,会放弃索引而...
一、什么是Using temporary ; Using filesort 1. using filesort filesort主要用于查询数据结果集的排序操作,首先MySQL会使用sort_buffer_size大小的内存进行排序,如果结果集超过了sort_buffer_size大小,会把这一个排序后的chunk转移到file上,最后使用多路归并排序完成所有数据的排序操作。
Using temporary:使用临时表保存中间结果,也就是说 MySQL 在对查询结果排序时使用了临时表,常见于order by 或 group by。 Using index:表示 SQL 操作中使用了覆盖索引(Covering Index),避免了访问表的数据行,效率高。 Using index condition:表示 SQL 操作命中了索引,但不是所有的列数据都在索引树上,还需要访问...
从上图我们得知,Extra的值有NULL、Using index、Using where、Using index condition、Using filesort、Using temporary 2.1 Using where explain select * from account_user_base where id > 4;Extra为Using where说明,SQL使用了where条件过滤数据。 2.2 Using index ...
using filesort,基于内存或者磁盘文件来排序,大部分时候都基于磁盘文件来排序: using temporary,SQL会在临时表里做大量的磁盘文件操作,性能比较低; 其实,只是干巴巴的罗列出执行计划的各个字段是什么意思,实际应用的时候,还是经常不知道怎么优化SQL,下面就举几个例子帮大家更好的理解执行计划的实际应用。