全国旗舰校区

不同学习城市 同样授课品质

北京

深圳

上海

广州

郑州

大连

武汉

成都

西安

杭州

青岛

重庆

长沙

哈尔滨

南京

太原

沈阳

合肥

贵阳

济南

下一个校区
就在你家门口
+
当前位置:首页  >  技术干货

在mysql中, 为什么只有右模糊才走索引?

发布时间:2023-10-13 13:18:13
发布人:xqq

一、在mysql中, 只有右模糊才走索引的原因

在 MySQL 中,索引通常是针对列值的左侧前缀进行排序和存储的。当使用 LIKE 查询语句时,如果使用“%”通配符在列值的左侧进行模糊匹配,那么 MySQL 将无法使用索引优化查询,而需要进行全表扫描。因此,只有在 LIKE 查询语句中,使用“%”通配符在列值的右侧进行模糊匹配时,MySQL 才能够利用索引进行优化查询,提高查询效率。这是因为只有右侧的列值前缀与查询条件相匹配,MySQL 才能够利用索引检索相关的记录,从而避免进行全表扫描。

二、MySQL LIKE 子句

在 MySQL 中,LIKE 关键字主要用于搜索匹配字段中的指定内容。其语法格式如下:

[NOT] LIKE  '字符串'

解释:

NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含通配符。右模糊:范围索引左模糊:不走索引,全表查询

LIKE 关键字支持百分号“%”和下划线“_”通配符:

搭配%使用:%代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据:搭配_使用:_代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出一条数据。

三、mysql常用查询语句

1、LIKE的灵活运用

% :匹配一个或多个字符串 _ :匹配单个任意字符串 【】:中括号内的单个字符匹配 【^ 】:非括号内的单个字符匹配

2、分组查询

GROUP BY +HAVING GROUP BY:用于分组,通常会与聚合函数(如max、sum、min、count等)搭配起来使用 HAVING:用于筛选,与where类似,但是一般会与GROUP BY搭配起来使用 

3、子查询

一般用in 、not in、exsit、not exsit将主查询表与子表中的关联字段做连接

4、取两个表结果集中的差集

在oracle里面比较简单,可以用minus 来直接取出两个表的差集。在mysql里面没有此类关键字可以用,相对来说查询效率较高的,要用左连接的方式来查询。

SELECT a.* FROM (SELECT * from malldb.mall_user_express_addr WHERE user_id=’53’ ) a LEFT JOIN (SELECT * FROM malldb.mall_user_express_addr WHERE address LIKE ‘%今天%’ ) b on a.id=b.id where b.id is null

5、分页查询

limit N,M 从N条开始到N+M条被取出 比如要取出第5页的数据,每页显示20条 select * from 表A limit 81,20

延伸阅读1:MySQL

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是较好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

#it技术干货

相关文章

为什么关系型数据库系统不易于scaling out(横向扩展)?

为什么关系型数据库系统不易于scaling out(横向扩展)?

2023-10-13
mysql中,replace into后怎么连接where子句?

mysql中,replace into后怎么连接where子句?

2023-10-13
MySQL中,既有redo log作为WAL,为什么还要change buffer只作用于二级索引?

MySQL中,既有redo log作为WAL,为什么还要change buffer只作用于二级索引?

2023-10-13
SQL语言中的ALTER和UPDATE,DROP和DELETE都有什么区别?

SQL语言中的ALTER和UPDATE,DROP和DELETE都有什么区别?

2023-10-13

最新文章

常见网络安全面试题:Windows常用的命令有哪些?

常见网络安全面试题:Windows常用的命令有哪些?

2023-10-09
常见网络安全面试题:根据设备告警如何展开排查?

常见网络安全面试题:根据设备告警如何展开排查?

2023-10-09
常见网络安全面试题:mysql加固呢?(数据库加固)

常见网络安全面试题:mysql加固呢?(数据库加固)

2023-10-09
常见网络安全面试题:windows和linux加固?(操作系统加固)

常见网络安全面试题:windows和linux加固?(操作系统加固)

2023-10-09
在线咨询 免费试学 教程领取