mysql高级索引分析,索引失效

一,索引分析
1,单表
2,两表
3,三表
join优化
尽可能减少join语句中的nestedLoop(嵌套循环链接)的循环次数:永远用小结果集驱动大结果集
优先优化NestedLoop(嵌套循环链接)的内层循环;
保证join语句中被驱动表上join条件字段已经被索引;
当无法保证驱动表join条件字段被索引且内存资源充足的前提下,不要太令色join buffer的设置


二,索引失效
1,全匹配最好
2,最佳左前缀法则:查询是不跳过多值索引的中间值;
3,不在索引上做任何操作(计算,函数,自动or手动类型转换),会导致索引失效全表扫描;
4,存储引擎不能使用索引中范围条件,右边的列
5,尽量使用覆盖索引(只访问索引的查询(索引的列和查询的列一致)),减少select *;
6,mysql在使用不等于(!=或<>)时无法使用索引,导致全表扫描,但是like后面不失效;
7,is null,is not null也无法使用索引;
8,like以通配符开头(%abc)mysql索引会失效变成全表扫描;
解决办法覆盖索引,select后面字段建立索引,不要使用 *
9,字符串不加单引号索引失效;
10,少用or用它来连接时索引失效;


注意:
order by的顺序必须和索引一致不然也会using filesort;
但是order by前,查询条件等于一个定制,再使用order by 排序,不会出现using filesort;

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值