一、说明
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
~~