mysql索引失效的几种情况

1、对列进行计算或者是使用函数,则该列的索引会失效
如:substring(字段名,1,2)=‘xxx’;
如:select * from test where id-1=9;//错误的写法;
select * from test where id=10; //正确的写法 ;

2、某些情况下的LIKE操作,该列的索引将不起作用。
如:字段名 LIKE CONCAT(‘%’, ‘2014 - 08 - 13’, ‘%’) ;

3、某些情况使用反向操作,该列的索引将不起作用。
如:字段名 <> 2;

4:不匹配数据类型,会造成索引失效
例如表的字段t_number定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效。
如: select * from test where t_number=13333333333; //错误的写法;
select * from test where t_number=‘13333333333’; //正确的写法

5:当B-tree索引 is null不会失效,使用is not null时,会失效,位图索引 is null,is not null 都会失效

6:在WHERE中使用OR时,有一个列没有索引,那么其它列的索引将不起作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值