MySQL-explain落实计划extra中有usingfilesort的由于

原创
小哥 3年前 (2022-10-29) 阅读数 118 #mysql
文章标签 sql

一、order by 字段,则该字段未编制索引,mysql查询稍后会在内存中进行排序。

二、where条件中有in时,由于in中的内容可能是无序的,甚至是复制的,因此where 中有in 在某种情况下,找到的数据可能是无序的或将出现 Using filesort。

三、MySQL explain在行刑计划中,即使给出了。order by 还将显示以下字段和索引using filesort的原因:

由于 Using filesort是使用算法在内存中进行排序,MySQL此外,对已排序记录的大小也有限制:max_length_for_sort_data,默认为1024:

show variables like %max_length_for_sort_data%;

+--------------------------+-------+
| Variable_name | Value |
+--------------------------+-------+
| max_length_for_sort_data | 1024 |
+--------------------------+-------+

测试后,如果排序查询中的数据量大于此默认值,则仍将使用该数据量。Using filesort。

总而言之,当排序查询中的数据量在缺省值内时,向排序字段添加索引可以提高MySQL查询的速度。当排序查询中的数据量超过默认值的范围时,仍会使用它。Using filesort,降低了查询效率。

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门