2016 - 2024

感恩一路有你

mysql中like模糊查询 MySQL模糊查询like和ilike的区别?

浏览量:2864 时间:2021-03-11 04:44:06 作者:admin

MySQL模糊查询like和ilike的区别?

LIKE 和 ILIKE 操作符可以模糊匹配字符串,LIKE是一般用法,ILIKE匹配时则不区分字符串的大小写,~ 波浪号则可以使用正则匹配。


LIKE和 ILIKE


它们需要结合通配符使用,下面介绍两种常用的通配符。

%:百分号用于匹配字符串序列,可匹配任意组合;

_:下划线用于匹配任何单一字符。


则可以使用正则模式来匹配字符串,除此之外它匹配模式还有一个特殊的地方

select * from table where ~ "ab" --> 如果是这样的形式就代表着他可以匹配任何包含ab的字符串其实就相当于省略的两边的 .*


如果想要做前缀匹配或后缀匹配,可以用下面的方法

1、前缀 模糊查询。

select * from table where ~ "^ab"


2、后缀 模糊查询。

select * from table where ~ "ab$"

分析为什么mysql中like模糊查询效率低?

相比update和insert,一般查询应该是数据库中操作最频繁的。而在有些应用场景需要用到like模糊查询,那么对于大数据,查询的时候就要注意了。

现在来分析一下为什么like语句查询的效率会很低,测试数据共4000000条,如下图:

第一步:不使用索引

下图可以看出,不使用索引的时候普通查询与like查询的耗时相当,like略长,这也是必然的,因为它要进行额外的算法。

第二步:使用索引

如下图,使用索引后,普通查询的耗时基本算是秒查,非常快;而like查询还是耗时一秒多。

第三步:分析原因

如下图,用explain分析一下,此时我们立刻明白了,普通查询用到了索引,但是like语句没有用到索引。

所以,照成mysql中like查询效率低下的原因是:在有些情况下,like查询使用不到索引,会扫描全表。

最后,补充一下,like语句有时候也是可以用到索引的,如下图,如果我们查询的时候写成“like "dd_"或者like "dd%"”,这样是可以用到索引的,此时的查询速度也会相对的快一点。虽然快了一点,但是还是比普通查询耗时要多很多。

因此,当表的数据量比较大的时候,尽量还是不要用like语句了。如果想做模糊搜索,建议用搜索引擎,比如solr,这样会比like强大n倍。

mysql查询语句中like的用法?

1、常见用法:(1)搭配%使用%代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据:(2)搭配_使用_代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出一条数据。2、使用like模糊查询会导致索引失效,在数据量大的时候会有性能问题(1)尽量少以%或者_开头进行模糊查询通过explain执行计划,我们发现,使用like模糊查询时,如果不以%和_开头查询的话,索引还是有效的。(2)使用覆盖索引当查询的的条件和查询的结果都是索引中的字段的时候,这个索引我们可以称之为覆盖索引,这个时候,使用like模糊查询索引是有效的。InnoDB中主键可以不添加进索引中注意:使用覆盖索引,对于字段的长度是由要求限制的,一般超过长度,索引也会失效这里如果查询中带有descripition字段,则覆盖索引也会失效。like语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。一、% 包含零个或多个字符的任意字符串:1、like"Mc%" 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。2、like"%inger" 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。3、like"%en%" 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。二、:_(下划线) 任何单个字符:like"_heryl" 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。三、[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符: 1,like"[CK]ars[eo]n" 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。2、like"[M-Z]inger" 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。

mysql中like模糊查询 sql多个like模糊查询 mysql数据库模糊查询语句

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。