索引优化原则

1、全值匹配
查询语句尽量使用全值匹配。
在这里插入图片描述
2、左前缀原则
如果一个索引是组合索引,索引了多列,要遵循左前缀原则,即查询从索引的左前缀开始,不能跳过索引中间的列。
在这里插入图片描述
在这里插入图片描述
3、不要在索引列上操作
操作包括:计算、函数、自动或手动的类型转换,不要在索引列上做上述任何操作,否则索引失效并转为全表扫描
在这里插入图片描述
在这里插入图片描述
4、范围条件右边的列索引全失效
当组合索引中出现范围条件,那么该范围条件右边的列索引全部失效。因此在设计和使用索引时,应把经常进行范围查询的列作为索引的最右列。
在这里插入图片描述
**5、按需取数据,少用select ***
在查询中少用select *,否则MySQL需要遍历结果列存在哪些字段。同时,应尽量使用覆盖索引,能避免二次查表
在这里插入图片描述
6、避免使用 != 或 <>
在使用不等于(!= 或 <>)时,无法使用索引,导致全表扫描。
在这里插入图片描述
7、避免is null 或 is not null
判断空值的查询条件索引失效,导致全表扫描。
在这里插入图片描述
8、避免like以通配符开头
查询条件like以通配符%开头,如 name like ("%abc"),索引失效,导致全表扫描。
在这里插入图片描述
那么如果业务需要必须要用通配符%开头怎么办?
答案是:使用覆盖索引
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9、少用or
使用or来连接查询条件时,索引失效。
在这里插入图片描述
10、尽量的扩展索引,不要新建索引。比如表中已经有a的索引,现在要加(a,b)的索引,那么只需要修改原来的索引即可,建立不必要索引会增加MySQL空间

11、如果确定有多少条数据,使用 limit 限制一下,MySQL在查找到对应条数的数据的时候,会停止继续查找

12、join 语法,尽量将小的表放在前面,在需要on的字段上,数据类型保持一致,并设置对应的索引,否则MySQL无法使用索引来join查询

13、=和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WD技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值