社区
MySQL
帖子详情
sql语法中,为什么 like ‘%张三’索引会失效
大表哥bettercong
2019-03-03 09:57:12
sql语法中,为什么 like ‘%张三’索引会失效?
表A中字段a上有索引indexa,查询语句使用
select 列 from A where a like '%张三' 时会出现索引失效的情况?
like语法中 like '%张三'索引失效,like '张三%'索引正常?
请问一下原因
...全文
1553
3
打赏
收藏
sql语法中,为什么 like ‘%张三’索引会失效
sql语法中,为什么 like ‘%张三’索引会失效? 表A中字段a上有索引indexa,查询语句使用 select 列 from A where a like '%张三' 时会出现索引失效的情况? like语法中 like '%张三'索引失效,like '张三%'索引正常? 请问一下原因
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ZTzhubajie
2019-03-04
打赏
举报
回复
索引最左原则
AHUA1001
2019-03-04
打赏
举报
回复
索引其实就是排序,或者说排队更直观。
like '张三%',实际你要找的是'张三XXX',只要把所有'张三'开头的那部分内容返回即可,这部分是连续的,不需要全表扫描。
like '%张三',实际你要找的是'XXX张三',这部分在索引里是不连续的,如果要返回需要的结果,只能全表扫描。
桂浮云
2019-03-03
打赏
举报
回复
以MySQL为例,字段a上的索引实际上是B-Tree索引;B-Tree索引可以用于like查询,但要求like后面为一个不能以%开头的常量字符串。 因此,select 列 from A where a like '%张三' 时会出现索引失效的情况。 可以参见官方文档: https://dev.mysql.com/doc/refman/8.0/en/index-btree-hash.html
总结
sql
语句
中
索引
失效
的情况
时隔许久又来更新博客了! 总结一下
sql
优化
中
sql
语句里
会
导致
索引
失效
的语句(
索引
失效
,导致全表扫描) 1、like的前置% eg. select * from user where name like '%
张三
%'; 2、where条件
中
的 or 语句 eg. select * from user where account= 20 or account= 30; 解决办法:使用 union、union all 语句。 select * from user where accoun..
索引
失效
的几种情况
索引
失效
本文参考尚硅谷视频 口诀:带头大哥不能死,
中
间兄都不能断,
索引
列上无操作,范围右边全
失效
,like百分加右边,字符串
中
有引号 准备: 建立员工记录表staffs(id,name,age,pos,add_time) 给表
中
name,age,pos字段添加
索引
(注意三个字段的顺序) alter table staff add index idx_staffs_nameAgePos(name,age,pos) ①最佳左前缀法则 指的是查询从
索引
的最左前列开始并且不跳过
索引
中
的列 (带头大哥不能死,
中
间
postgrep
sql
学习
目录1、postgre
sql
----
索引
失效
2、postgrep查看
sql
是否使用
索引
3、模糊查询like优化4、postgrep自增主键5、`on CONFLICT`
语法
6、Postgrep使用json字段,存储json数据7、postgrep json字段查询 1、postgre
sql
----
索引
失效
https://www.cnblogs.com/alianbog/p/5648455.html 2、postgrep查看
sql
是否使用
索引
EXPLAIN ANALYZE select * FROM
SQL
语法
文档
数据库
my
sql
---
索引
(二)
数据库高级
索引
sql
优化
MySQL
56,679
社区成员
56,709
社区内容
发帖
与我相关
我的任务
MySQL
MySQL相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MySQL相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章