1.如果排序字段不在索引列上,filesort有两种算法:musql就要启用双路排序和单路排序(单路排序快一些)。
2.无过滤不索引。
3.order by 非最左filesort
4.顺序错了filesort
5.方向反了filesort
6.记不住多动手实验,熟练使用explain,必要时使用optimizer_trace
答案:
1.首先要对sql进行分析检测必要的查询字段,过滤字段,排序字段是否按顺序创建好了索引。
2.如果查询的字段不在索引中可能会产生回表操作导致filesort,降低性能。
3.一定要有过滤字段不然不能使用索引
4.排序字段和索引顺序不一致会导致filesort,降低性能。
5.多个字段排序时如果方向不一致会导致filesort,降低性能
6.使用explain观察查询类型和索引利用情况
7.尽可能减少不必要的filesort