通过explain查看sql的执行计划时,Extra字段的值往往会看到Using where; Using index; Using temporary; Using filesort 一、using filesort 在使用order by关键字的时候,如果待排序的内容不能由所使用的索引直接完成排序的话,那么mysql有可能就要进行文件排序。 【这个 filesort 并不是说通过磁盘文件进行排序,而只是告...
当EXPLAIN中的extra中出现Useing filesort时说明语句性能不好,需要优化。 Using filesort 是一种速度很慢的外部排序。 即使order by 后的字段加了索引,也可能出现Using filesort,因为有可能索引定义不当,MySQL 没有用到索引 例如: 1 explainSELECT*FROMtable_itemWHEREuser_id = 2ORDERBYitem_id LIMIT 0, 5 us...
Using temporary:mysql需要创建一张临时表来处理查询。出现这种情况一般是要进行优化的,首先是想到用索引来优化 1. actor.name没有索引,此时创建了张临时表来distinct 2. film.name建立了idx_name索引,此时查询时extra是using index,没有用临时表 Using filesort:将用外部排序而不是索引排序,数据较小时从内存排序,...
MySQL.5.7后,默认explain直接显示partitions和filtered的信息。 1.14 Extra 其他额外的信息。 (1)Using filesort 说明mysql 会对数据使用一个外部的索引排序,而不是按照表内的索引顺序进行读取。MySQL 中无法利用索引完成的排序操作称为“文件排序”。 举个例子,trb1表建立一个组合索引 下面的查询出现filesort : 按照...
在explain我们所使用的sql的时候,经常会遇到using filesort这种情况,原以为是由于有相同列值的原因引起,结果昨天看到公司的一个sql,跟同事讨论了下加上自己又做了一些测试,突然发现自己原来的想法是错误的。 首先,只有在order by 数据列的时候才可能会出现using filesort,而且如果你不对进行order by的这一列设置索引...
有时查看SQL的执行计划时, 会遇到Using filesort, 如下.mysql> explain select * from tb1 where col1 = 4 order by col2\G*** 1. row...
possible_keys列指示MySQL可以从中选择以查找此表中的行的索引。请注意,此列与EXPLAIN输出中显示的表的顺序完全无关。这意味着possible_keys中的一些键在实际中可能无法使用。 如果此列为NULL(或在JSON格式的输出中未定义),则表示没有相关索引。在这种情况下,您可以通过检查WHERE子句是否引用了某些适合索引的列或列来...
Using where 表示查询使用了 WHERE 子句过滤数据。 Using temporary 表示查询需要创建临时表来处理结果集,这可能发生在使用了临时表进行排序操作或者连接操作时。 Using filesort 表示查询需要对结果集进行文件排序操作,这通常发生在无法使用索引完成排序时。
1、Using filesort : mysql对数据使用一个外部的索引排序,而不是按照表内的索引进行排序读取。也就是说mysql无法利用索引完成的排序操作成为“文件排序” 由于索引是先按email排序、再按address排序,所以查询时如果直接按address排序,索引就不能满足要求了,mysql内部必须再实现一次“文件排序” ...