索引的设置以及避免失效

如何尽可能避免索引失效?

一条dml(最重要的还是查询sql),要经过编译(形成关系代数表达式)-》逻辑优化(比如多表连接 尽可能将选择操作 投影操作提前)-》物理优化(为每一个基本的关系代数操作选择例行程序)-》交给执行引擎 执行。

索引失效就是DBMS发现全表扫描的效率更高,那么显然不走索引了。

  • in 可能会导致索引失效
  • like可能会导致索引失效
  • < > != not in not like 等反向查询 可能会导致索引失效
  • 索引列使用 is null is not null 肯能会使索引失效
  • like “%gao%” 一定会导致索引失效
  • 索引列参与运算 肯定会使索引失效 where user.id - 1 = 5
  • 索引列的显式调用函数 或者隐式类型转化,肯定会导致索引失效
  • where 中索引列不符合最左匹配原则一定会失效。

索引设置的原则

  • 区分度高 比如对性别设置索引 就可能导致全表扫描
  • 不是频繁更新
  • 经常查询的字段
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值