《死磕MySQL系列》为什么MySQL字符串不加引号索引失效

==========

你肯定在网上看到过非常多关于索引失效原因的文章,但是一定要自己亲手尝试一下,因为版本不同引发的结果不会一致。

1.带头大哥不能死

这句经典语句是说创建索引要符合最左侧原则。

例如表结构为u_id,u_name,u_age,u_sex,u_phone,u_time

创建索引为idx_user_name_age_sex。

查询条件必须带上u_name这一列。

2.不在索引列上做任何操作

不在索引列上做任何计算、函数、自动或者手动的类型转换,否则会进行全表扫描。简而言之不要在索引列上做任何操作。

3.两边类型不等

例如建立了索引idx_user_name,name字段类型为varchar

在查询时使用where name = kaka,这样的查询方式会直接造成索引失效。

正确的用法为where name = “kaka”。

4.不适当的like查询会导致索引失效

创建索引为idx_user_name

执行语句为select * from user where name like “kaka%”;可以命中索引。

执行语句为select name from user where name like “%kaka”;可以使用到索引(仅在8.0以上版本)。

执行语句为select * from user where name like ‘’%kaka";会直接导致索引失效

5.范围条件之后的索引会失效

创建索引为idx_

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值