MySQL-explain落实计划extra中有usingfilesort的由于
原创一、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,降低了查询效率。
版权声明
所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除