explain之extra

   using  index,索引覆盖。什么是索引覆盖呢?就是,查询的列都在索引里面可以找到,这样就不用去数据库里面查找了。性能全表扫描高。如果这里用到了where条件,那么条件必须是索引的前缀列。============**从索引里面查数据**
   using  where,查询的列没有被索引覆盖,并且where 的条件非索引的前缀列。注意,这个必须有where条件!!!!毕竟是using  where嘛,没有where条件怎么叫using  where?=========**没有从索引里面查数据**
    using  where,using index:   查询的列被索引覆盖,且where条件非索引前缀列。如果是前缀列,就成了using index了。表达的意思是通过索引覆盖没办法查到所有数据,必须通过表才行。这里的查数据要深刻理解,查数据包括两部分,在哪里查,通过什么条件查。虽然有索引覆盖数据可以通过索引取出,可是查询条件不再索引中,或没办法走索引取数据。======**从索引取数据,但是没有从索引里面查数据**
    null ,查询的列没有被索引覆盖,但是where条件是索引前缀列。这样的情况下,using  index不合适,因为查询的字段没有从索引里面取。using  where也不合适,因为where条件么有走索引是 using  where,而这里没有using  where,所以是走了索引的。====**没有从索引取数据,但是从索引查数据**
    using index condition,首先排除using  index索引覆盖。查询的肯定不是索引覆盖的字段,另外不是using  where,说明where的条件不是前缀列,不然就是null了。如果没有where条件,比如select  * from 表  ,那么也是null。所以肯定有where条件,where条件要是前缀的话就成了null了。也不对,那就一个sql查询的字段没有索引覆盖,有where条件但是条件不是前缀列。那是什么?有条件但是不是前缀的话就成了using where了。答案是,未被索引覆盖,where条件是前缀列,但是是前缀列 的范围查询。就是说前缀列使用了大于小于等符号。
     using  temporary,使用了临时表来处理数据。这里讲一下临时表和衍生查询,衍生查询侧重的是查询,查询的表来自于select产出的表,不是直接查找数据库的表。临时表是经过处理的表,比如group  by,distinct  等。
     using filesort,文件排序。这里说明没有走索引排序
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值