MySQL优化手册概要——ORDER BY优化

MySQL优化手册之 —— ORDER BY 优化准则

  • NOTE-A:排序字段需反复调试校验;
  • NOTE-B:准则二中关于系统变量/参数调整,8+版本单独开篇说明。

准则一:极力避免采用filessort排序,保证通过有序索引扫描(using index)

  1. 避免对非索引字段排序(应保证覆盖索引);
  2. 确保 ORDER BY 的 CONDITION 中字段在同一索引中;
  3. 确保 ORDER BY 的 CONDITION 中字段顺序与复合索引创建时的顺序一致
  4. 确保 ORDER BY 的排序标记一致(避免 ORDER BY A DESC, B ASC;) ;
  5. 避免 WHERE 的 CONDITION 与 ORDER BY 的 CONDITION 使用不同索引
  6. 避免 WHERE 的 CONDITION 或 ORDER BY 的CONDITION 中使用包括函数表达式在内的各种表达式
  7. 确保 WHERE 的 CONDITION 与 ORDER BY 的 CONDITION 满足最左前缀原则;
  8. 确保[左/右]连接查询时,ORDER BY 的 CONDITION 为[左/右]的字段;
  9. 确保多表联查时,ORDER BY 的 CODITION 字段为首张表的字段;
  10. 确保在

准则二:不可避免地filesort时,则应优化 filesort

  1. filesort排序算法简要
    filesort
  2. 优化filesort
    1) 适当提高 sort_buffer_size 和 max_length_for_sort_data 的系统变量;实际需要根据数据量进行实际测试。
    2) 优化查询的字段,使其长度匹配 max_length_for_sort_data 参数的限制。
    NOTE: MySQL 8+ 的方案

MySQL优化手册概要——ORDER BY优化(MySQL 8+ )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值