【Mysql】mysql | sql优化 | 优化using filesort

时间:2022-11-25 10:56:58


一、说明

        1、sql优化

        2、基于sql的优化

二、场景

1、using filesort

1)通过explain查看sql执行计划

explain SELECT * from t_hg a WHERE a.user = '0011' ORDER BY a.datetime DESC;

2)extral列标识

using filesort

说明1: sql为select

说明2: sql中用到where以及order by

说明3: sql中where中字段建立普通索引,order by 建立普通索引

说明4: 出现using filesort是order by对结果进行排序

3)规避using filesort,建立联合索引(组合索引)

create index gdx_user_datetime on t_hg(user, datetime);

说明1: 联合索引将排序前置

说明2: 加入联合索引后,extral标识改为

Backward index scan

即从索引中获取数据

4)结论

说明1: 当​​Where​​​ 条件和 ​​order by​​ 子句作用在不同的列上,建立联合索引可以避免​​Using filesort​​的产生

说明2: 通过联合索引去掉​​Using filesort​​,耗时减少,实际操作并不稳定;但平均时间可能会所提升。

说明3: 尽可能规避掉Using filesort

~~