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 打赏 收藏 转发到动态 举报
写回复
用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

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧