like模糊查询导致索引失效的解决方案

这篇具有很好参考价值的文章主要介绍了like模糊查询导致索引失效的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们在使用like 通配符有下面三种用法,其中第1和第2的用法会引起索引失效的问题。这是因为MySQL的索引是按照从左到右的顺序进行匹配的,而前导通配符(比如%abc)会导致无法按照索引顺序进行匹配。

1、like '%name'   ——> 失效

2、like '%name%'  ——> 失效

3、like 'name%'

现在来说下解决方案:

1. 为需要进行模糊查询的name字段增加一个联合索引,比如name 和 age

like模糊查询导致索引失效的解决方案

 2.  Select 后面查询的字段必须要带上 name 和 age, 这样的查询就是覆盖索引查询

like模糊查询导致索引失效的解决方案

 3.用关键字Explain, 可以看到我们的模糊查询sql是有用上索引的

like模糊查询导致索引失效的解决方案

 

覆盖索引定义:MySQL 执行计划 explain 结果里的 key 有使用索引,如果 select 后面查询的字段都可以从这个索引的树中获取,这种情况一般可以说是用到了覆盖索引,extra 里一般都有 using index;覆盖索引一般针对的是辅助索引,整个査询结果只通过辅助索引就能拿到结果,不需要通过辅助索引树找到主键,再通过主键去主键索引树里获取其它字段值。

1.覆盖索引是一种数据查询方式,不是索引类型
2.在索引数据结构中,通过索引值可以直接找到要查询字段的值,而不需要通过主键值回表查询,那么就叫覆盖索引
3.查询的字段被使用到的索引树全部覆盖到文章来源地址https://www.toymoban.com/news/detail-500653.html

到了这里,关于like模糊查询导致索引失效的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql : name like “%name“; 索引一定失效吗?

    场景如下: MySQL版本如下: 表结构如下: 索引结构如下: 查询语句以及执行计划如下: 第一条查询语句: select name from em where name like ‘%b’; 可以发现使用了name 字段创建的索引 第二条查询语句: select id from em where name like ‘%b’; 第三条查询语句: select * from em where name l

    2024年02月03日
    浏览(29)
  • mysql 模糊查询like优化方案(亲测)

    本文的测试是基于 740w条 测试数据进行的,只讨论like模糊查询的优化方案。其他SQL优化可参考: SQL优化的几种方式 查询开头是“今天不开心”的聊天记录,是可以走索引的。 查询包含“今天不开心”的聊天记录,是不能走索引的。 咱们主要优化的是第二种情况,我本人测

    2023年04月08日
    浏览(80)
  • 软件测试|MySQL LIKE:深入了解模糊查询

    简介 在数据库查询中,模糊查询是一种强大的技术,可以用来搜索与指定模式匹配的数据。MySQL数据库提供了一个灵活而强大的LIKE操作符,使得模糊查询变得简单和高效。本文将详细介绍MySQL中的LIKE操作符以及它的用法,并通过示例演示其功能。 基本语法 MySQL中的LIKE操作符

    2024年02月02日
    浏览(39)
  • SQL Server 数据表模糊查询(like 用法)以及查询函数

    在SQL Server Management Studio (SSMS) 中,进行模糊查询主要是通过使用 like 操作符来实现的。 like 操作符用于在 where 语句中搜索列中具有指定模式的数据。 我们在简单例子中来了解: % 通配符:表示任意数量的字符。 这个例子会选择 column_name 列中包含\\\"pattern\\\"这个词的所有记录,就

    2024年01月22日
    浏览(60)
  • ElasticSearch中实现模糊查询效果(类似数据库中like功能)

    场景: 业务要求提供一个es查询功能,实现类似模糊查询效果,并且命中字段显示红色。举例说明: es中字段内容 输入(即) 是否输出 你好,中国,强大的祖国 中国 是(则‘中国’两个字飘红) 你好,中国,强大的祖国 俄国 否 你好,中国,强大的祖国 最大 否 实

    2024年02月12日
    浏览(31)
  • MySQL的index merge(索引合并)导致数据库死锁分析与解决方案

    在DBS-集群列表-更多-连接查询-死锁中,看到9月22日有数据库死锁日志,后排查发现是因为mysql的优化-index merge(索引合并)导致数据库死锁。 index merge(索引合并):该数据库查询优化的一种技术,在mysql 5.1之后进行引入,它可以在多个索引上进行查询,并将结果合并返回。 在

    2024年02月08日
    浏览(37)
  • 【数据库】哪些操作会导致索引失效

    🍎 个人博客: 个人主页 🏆 个人专栏: 数据库 ⛳️   功不唐捐,玉汝于成 目录 前言 正文 结语  我的其他博客   在数据库管理中,索引的有效性对于查询性能至关重要。然而,索引可能会因为各种操作而失效,从而影响到数据库的性能和稳定性。了解导致索引失效的常

    2024年02月19日
    浏览(31)
  • 优先看我的博客:工控机 Ubuntu系统 输入密码登录界面后界面模糊卡死,键盘鼠标失效(不同于其他博主的问题解决方案,优先看我的博客。)

            (不同于其他博主的问题解决方案,工控机Ubuntu的系统   优先看我的博客。) 系统版本: ubuntu18.04 主机: 工控机 应用场景: 电力系统巡检机器人,工控机外hdmi接显示器,外接鼠标键盘。 问题: 之前在自己公司测试工控机可正常工作,但是发往客户现场后出现问

    2024年01月17日
    浏览(40)
  • Elasticsearch 中基于wildcardQuery的模糊查询失效

    es中常用的模糊查询为: \\\"query\\\": {         \\\"wildcard\\\": {             \\\"testWord\\\": \\\"*测试数据*\\\"         }     } 对应java中es的API为:  一般情况下,这个模糊查询是没有问题的,但是当testWord的字段过长时,会导致es搜索失效。通过资料查询,这个文本的范围在256~32

    2024年02月05日
    浏览(33)
  • Elasticsearch Mapping字段未支持索引导致搜索失效

    生产上Es根据一个时间字段搜索,却没有返回数据 根据命令: GET indexName/_mapping 查看 count_name设置了 “index”: false 导致根据该字段搜索导致索引不生效。 ES的mappings 定义好了生成索引后是不支持修改现有的字段的,只能新增属性。 使用 reindex 命令处理 1、运行命令: GET ind

    2024年02月11日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包