索引实战总结

索引实战总结

索引使用原则

  • 最左前缀原则
  • 不在索引列做任何操作,统计,计算等操作会使索引失效,从而全表扫描
  • 进行范围查询时,命中索引第一个列时,该列右面的索引列将无法使用,因为右面数据将是无序的
  • 尽量使用覆盖索引
  • MySQL中使用不等于时,容易造成全表扫描
  • is null , is not null一般情况下也是不走索引的
  • like查询以通配符开头回导致全表扫描
  • 字符串查询不加单引号会因为类型不一致导致不走索引
  • 少用in or 容易不走索引

索引下推

对于联合索引,如果在查询时使用了like等方式,由于后面几个索引都是无序的所以只走了第一个索引,在MySQL5.6以前版本回进行回表查询,然后根据另外的条件进行查询;
在MySQL5.6以后引入了索引下推机制,在回表之前先使用其他条件筛选一遍,将结果进行回表查询,从而减少回表次数。

using filesort排序原理

  • 出现using filesort原因:排序字段未命中索引项,使用普通字段进行排序
  • 两种排序算法
    • 单路排序:一次性取出所有满足查询条件的所有数据,放到sort buffer里面进行排序。
    • 双路排序:又叫回表排序,首先取出所有满足查询条件的行对应的主键id以及排序字段,放入到sort buffer中进行排序;排序完成后根据id进行回表查询所有字段。
  • 选择原理
    • 原理:MySQL中有一个max_length_for_sort_data参数,默认值是1kb,当需要查询的字段总大小小于该值时使用单路排序,大于该值时使用双路排序
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值