避免索引失效原则

1、避免索引失效原则

1、复合索引,不要跨列或者无序使用(最佳左前缀)
2、复合索引,尽量使用全索引匹配
3、不要在索引上进行任何操作(比如:对索引进行类型转化,加减乘除计算等)
4、复合索引不能使用不等于(!=  <>)或者is not null负责自身及右侧全部失效
索引优化大部分都适用,但是也不是100%可以成功
一般而言,范围查询之后的索引失效
5、补救秘籍,使用索引覆盖(using index)
select a,b,c from test where a=... and b=...;
6、like尽量以常量开头不要以%开头
7、尽量不要使用类型转化(显示,隐式都不行),否则索引失效
8、尽量不要使用or否则索引失效

2、一些其他的诱发方法

(1)exists in
如果主查询的数据极大,使用in
如果子查询的数据极大,使用exists
exists 语法:将主查询的结果,放在子查询中进行条件校验,(是否有数据,如果有数据为校验成功)
如果符合校验,则保留数据
select * from teacher where exists(子查询)
in语法:
select * from teacher where tid in (select tid from course)
(2)order by
using filesort(双路排序,单路排序) 根据IO的次数 来判断单路 还是双路
双路排序:扫面两次磁盘,(1:扫描排序字段,对字段进行排序(在buffle中进行的排序)  2:扫描其他字段)
单路排序:扫瞄一次磁盘,但是在buffer中可能存在多次排序(如果数据量特别大,则无法将所有的数据一次性
读取完毕,则会进行多次读取)
注意:单路排序会比双路排序占用更多的buffer,可以调大buffer的容量
提高order by 查询的策略
a,选择使用单路、双路,调整buffer的容量
b,避免使用select * ....
c,复合索引 不要跨列使用,避免using filesort
d,保证全部的排序字段 排序的一致性(升序或者降序)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值