MySQL中几种查询情况的好坏程度

  1. system 这是const联接类型的一个特例,当查询的表只有一行时使用
  2. const:表示通过索引一次就找到了,const用于比较primary key 或者 unique索引。因为只需匹配一行数据,所有很快。如果将主键置于where列表中,mysql就能将该查询转换为一个const
  3. eq_ref:唯一性索引扫描,对于每个索引键,表中只有一条记录与之匹配。常见于主键 或 唯一索引扫描。
  4. ref:非唯一性索引扫描,返回匹配某个单独值的所有行。本质是也是一种索引访问,它返回所有匹配某个单独值的行,然而他可能会找到多个符合条件的行,所以它应该属于查找和扫描的混合体
  5. ref_or_null 类似于 ref类型的查询,但是附加了对 null 值列的查询
  6. range:只检索给定范围的行,使用一个索引来选择行。key列显示使用了那个索引。一般就是在where语句中出现了between、<、>、in等的查询。这种索引列上的范围扫描比全索引扫描要好。只需要开始于某个点,结束于另一个点,不用扫描全部索引
  7. index:Full Index Scan,index与ALL区别为index类型只遍历索引树。这通常为ALL块,应为索引文件通常比数据文件小。(Index与ALL虽然都是读全表,但index是从索引中读取,而ALL是从硬盘读取)
  8. ALL:Full Table Scan,遍历全表以找到匹配的行

 

  1. Distinct 优化distinct操作,在找到第一匹配的记录后即停止找同样的动作
  2. Not exists 使用 not exists 来优化查询
  3. Using filesort 使用额外操作进行排序,通常会出现在order by 或 group by 查询
  4. Using index 使用了覆盖索引进行查询
  5. Using temporary mysql需要使用临时表来处理查询,常见于排序,子查询,和分组查询
  6. Using where 需要在mysql服务器层使用 where条件来过滤数据
  7. select tables /optimized away 直接通过索引来获得数据,不用访问表
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值