场景:用户反馈,xx功能生产环境反应过慢,数据最长8秒响应
接口定位:无复杂逻辑,定位到具体SQL
SQL分析:
无索引命中,a表全表扫描
Extra Using filesort
Using filesort 是什么意思?
官方的定义是,MySQL must do an extra pass to find out how to retrieve the rows in sorted order. The sort is done by going through all rows according to the join type and storing the sort key and pointer to the row for all rows that match the WHERE clause . The keys then are sorted and the rows are retrieved in sorted order。
MySQL需要额外的一次传递,以找出如何按排序顺序检索行。通过根据联接类型浏览所有行并为所有匹配WHERE子句的行保存排序关键字和行的指针来完成排序。然后关键字被排序,并按排序顺序检索行。标红,重点。即回表操作。
完整SQL隐藏关键信息
explain select
xx
from
a
left join r on
a.x= r.x
where
xx
xx
xx
xx
xx
order by
a.submitTime desc
limit 0 ,
10
查询a表进行一次回表操作
1强制使用索引
FORCE INDEX (ind_zzz)
没有任何效果
order by 字段建立索引
图片
测试
完成响应 249ms
测试数据命中索引
MySQL是广泛应用于互联网领域的关系型数据库管理系统,SQL语句优化对于提升查询性能至关重要。本文主要讨论MySQL中的Using filesort,介绍其工作原理及影响因素,并提供一些优化策略,以帮助开发者充分理解和正确应用Using filesort,从而提升查询性能。
一、引言
MySQL是一款使用广泛的关系型数据库管理系统,被广泛应用于互联网领域。在大型互联网应用中,高效的SQL查询性能对于系统的稳定性和用户体验至关重要。因此,对于SQL查询的优化和性能提升成为了开发者们需要解决的关键问题。
在MySQL中,Using filesort是一个常见的查询执行计划的操作,它用于对查询结果进行排序。然而,Using filesort的性能开销较大,不当使用可能导致查询性能的下降。因此,充分理解Using filesort的工作原理及优化策略,尤为重要。
二、Using filesort的工作原理
Using filesort主要用于对查询结果进行排序操作。当MySQL优化器决定使用Using filesort时,它会在内存或者磁盘上创建一个临时文件,将查询结果写入该临时文件,并进行排序操作。最后,将排序后的结果返回给用户。
Using filesort的工作原理可以分为以下几个步骤:
三、影响Using filesort性能的因素
四、优化Using filesort的策略
五、结论
Using filesort是MySQL中常见的排序操作,对于查询性能的影响较大。通过充分理解Using filesort的工作原理及影响因素,我们可以采取一系列的优化策略来提升查询性能。选择合适的排序字段、优化数据分布和排序结果、合理选择索引类型以及手动干预查询执行计划等手段,都可以帮助我们最大程度地减少Using filesort的使用,提高查询性能。
因此,在进行MySQL SQL优化时,特别是对于频繁进行排序操作的查询,我们应该充分了解Using filesort的工作原理,并根据实际情况采取相应的优化策略,从而提升查询性能,确保系统的稳定性和用户体验。