提升mysql之模糊查询效率的方法

        在 MySQL 中,如果你使用 like '%%' 这样的查询,通常情况下不会使用索引,因为这个查询会匹配表中的所有行,这意味着 MySQL 无法利用索引来快速定位到符合条件的行。

        当使用 like 操作符时,如果在模式串前面使用了通配符 %,MySQL 将无法使用索引来加速查询,因为在这种情况下,MySQL 必须扫描整个索引才能确定哪些行匹配查询条件。

        如果你的查询中包含前缀匹配,例如 like 'foo%',则 MySQL 可以使用索引来定位到以 "foo" 开头的行。同样地,如果你的查询中包含后缀匹配,例如 like '%foo',MySQL 可以使用索引来定位到以 "foo" 结尾的行。

        总之,当你编写 like 查询时,请尽量避免在模式串前面使用通配符 %,以提高查询性能并允许 MySQL 使用索引来加速查询。

那么如果你有业务需要用到like '%foo%' 如何做到高效查询?

        MySQL 提供了全文搜索引擎功能,可以通过使用 MATCH AGAINST 语法进行全文搜索。全文搜索引擎可以为文本数据建立索引,使得模糊搜索更加高效。

SELECT * FROM mytable WHERE MATCH (mycolumn) AGAINST ('foo' IN BOOLEAN MODE);

        这个查询将返回 mycolumn 列中包含单词 "foo" 的所有行。通过使用全文搜索引擎,MySQL 可以利用索引来快速定位匹配的行,从而提高查询性能。

        需要注意的是,全文搜索引擎对于一些短词或者常用词可能不会进行索引,因此需要在使用前仔细查看 MySQL 的文档并进行配置。此外,全文搜索引擎的配置和性能优化也是一个复杂的课题,需要根据实际情况进行调整和优化。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

winx96

谢大哥~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值