通过与 Jira 对比,让您更全面了解 PingCode

  • 首页
  • 需求与产品管理
  • 项目管理
  • 测试与缺陷管理
  • 知识管理
  • 效能度量
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案

25人以下免费

目录

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

在mysql中, 只有右模糊才走索引的原因:MySQL索引通常按列值的左侧前缀进行排序和存储,使用%通配符在列值的左侧执行模糊匹配会导致无法使用索引优化查询,需要进行全表扫描。因此,只有在LIKE查询中将%通配符置于列值的右侧时,MySQL才能够利用索引进行优化查询以提高查询效率。

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

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

二、MySQL LIKE 子句

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

[NOT] LIKE  '字符串'

解释:

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

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

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

三、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是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

相关文章