Using filesort 文件排序原理详解

我们知道索引排序分为两种Using Index,Using filesort如图:
在这里插入图片描述
一般来说:当Where 条件和 order by 子句作用在不同的列上,建立联合索引可以避免Using filesort的产生。
但是,我们在索引优化排序时可能会遇到这种情况:
排序的字段不在where的条件中。没有办法走索引排序Using Index而是走的文件排序Using filesort ,这个时候该怎么办?
这个时候就需要看文件排序用的是单路排序还是双路排序(回表排序)

示例验证下各种排序方式: 查看下这条sql对应trace结果如下(只展示排序部分):

set session optimizer_trace="enabled=on",end_markers_in_json=on; ‐‐开启trace 
 select * from employees where name = 'zhuge' order by position;   select * from information_schema.OPTIMIZER_TRACE; 
 trace排序部分结果: 
  "join_execution": {
    ‐‐Sql执行阶段 
   "select#": 1, 
    "steps": [ 
     {
    
      "filesort_information": [ 
       {
     "direction": "asc", 
        "table": "`employees`", 
  
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值