记一次MySql唯一索引在left join连表查询没走索引的问题

在新建一张账单结算信息表bill_settlement_info的时候,建立的唯一索引uk_bill_no(bill_no,tenant_id)。由于列表查询用到该表的字段。所以在sql中自然做了jeft join查询。

on条件是bill.billNo=bill_settlement_info.billNo。

自然认为这样的链表会走bill_settlement_info的索引。但是上线生产后,由于生产数据增长很快。立马发现列表查询时,使用bill_settlement_info表中的字段过滤数据时。查询超时。

排查后发现是慢SQL导致。

使用explan分析查询语句发现是连表bill_settlement_info查询时。没有走索引。连表语句:

select * from bill left join bill_settlement_info on bill.bill_no = bill_settlement_info.bill_no

在on条件中加上tenant_id后,重新explan后发现走了索引

select * from bill left join bill_settlement_info on bill.bill_no = bill_settlement_info.bill_no and bill.tenant_id = bill_settlement_info.tenant_id

所以能得出结论。MySql的唯一索引是严格按照左匹配原则的。

Original: https://www.cnblogs.com/zhuzhen/p/16355075.html
Author: 十七年蝉
Title: 记一次MySql唯一索引在left join连表查询没走索引的问题

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622192/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Redis的Java客户端

    Redis 的 Java 客户端 Jedis 优点:以 Redis 命令作为方法名称,学习成本低廉,简单且实用 缺点:Jedis 的实例是线程不安全的,在多线程的环境下需要基于线程…

    数据库 2023年6月16日
    094
  • 多商户商城系统功能拆解30讲-平台端营销-商家优惠券

    多商户商城系统,也称为B2B2C(BBC)平台电商模式多商家商城系统。可以快速帮助企业搭建类似拼多多/京东/天猫/淘宝的综合商城。 多商户商城系统支持商家入驻加盟,同时满足平台自营…

    数据库 2023年6月14日
    0101
  • MYSQL–>SQL优化

    Insert优化 优化原因:MYSQL数据库中insert每执行一次都会对数据库进行一次连接,会浪费很大资源。 优化方案: 批量插入 插入数据的时候尽量一次性批量插入多个数据而不是…

    数据库 2023年6月14日
    094
  • 如何画出别人一看就懂的架构图?

    技术传播的价值,不仅仅体现在通过商业化产品和开源项目来缩短我们构建应用的路径,加速业务的上线速率,也体现在优秀工程师在工作效率提升、产品性能优化和用户体验改善等经验方面的分享,以提…

    数据库 2023年6月14日
    093
  • Oracle扩展表空间

    Oracle扩展表空间 前言: Oracle表空间扩展最大为32G,目前我还未找到可以打破限制的办法。 一、查看表空间信息和使用情况 查看表空间的名字及文件所在位置 — &amp…

    数据库 2023年6月16日
    0111
  • Null和空值对于avg计算时产生的影响以及处理

    为什么要关注这一块呢:1.面试中可能会有涉及 2.工作中真的也可能会用,既然有可能我也用过,就拿出来跟大家分享一下,上一篇的博文,数据已准备好就不做数据准备的介绍了。 step1:…

    数据库 2023年6月6日
    0109
  • Python操作Excel表格

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/b0277e1c.html 你好,我是测试蔡坨坨。 上期我们分享了一个Python编写的小工具——「Py…

    数据库 2023年6月11日
    0113
  • MySQL高可用架构搭建实战

    前言 对于 MySQL 数据库作为各个业务系统的存储介质,在系统中承担着非常重要的职责,如果数据库崩了,那么对于读和写数据库的操作都会受到影响。如果不能迅速恢复,对业务的影响是非常…

    数据库 2023年5月24日
    0117
  • MySQL实战45讲 15

    15 | 答疑文章(一):日志和索引相关问题 日志相关 binlog(归档日志)和redo log(重做日志)配合崩溃恢复,在两阶段提交的不同瞬间,MySQL如果发生异常重启,是怎…

    数据库 2023年6月16日
    0139
  • K8S的安装部署以及基础知识

    Kubernetes(K8S)概述 Kubernetes又称作k8s,是 Google在2014年发布的一个开源项目。 最初Google开发了一个叫 Borg的系统(现在命名为Om…

    数据库 2023年6月6日
    0102
  • Linux下的ssh、scala、spark配置

    注:笔记旨在记录,配置方式每个人多少有点不同,但大同小异,以下是个人爱好的配置方式. 平台:win10下的ubuntu虚拟机内 所用到的文件:hadoop-2.7.3.tarjdk…

    数据库 2023年6月16日
    0126
  • MySQL中的触发器

    1.定义: 触发器和存储过程相似,都是嵌入到 MySQL 中的一段程序。触发器是由事件来触发某个操作。当数据库执行这些事件时,就会激活触发器来执行相应的操作。这些事件称为触发条件,…

    数据库 2023年6月16日
    0116
  • Mysql_范式入门

    MySQL 三大范式 为什么需要数据规范化 信息重复 更新异常 插入异常 无法正常显示信息 删除异常 丢失有效的信息 设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据…

    数据库 2023年6月11日
    097
  • HA: FORENSICS靶机练习

    ubuntu拿到手,没有恢复模式,不好绕密码,仿真软件又会更改所有用户的密码,怕影响后续操作,先不采用,先试试用john跑一下看看能不能跑出一两个来。 刚好跑出来一个,用户 &lt…

    数据库 2023年6月11日
    095
  • MySQL高可用安装

    MySQL HA部署 环境准备 创建本地yum源 确认关闭 SELinux 防火墙设置 MySQL安装 使用 root 用户操作创建相关的用户组和用户 上传/解压介质 设置自启动 …

    数据库 2023年6月16日
    067
  • Centos7环境使用Mysql离线安装包安装Mysql5.7

    服务器环境:centos7 x64 需要安装:mysql5.7+ 1)检查mysql组合用户是否存在 2)若不存在,则创建mysql组和用户 对于版本选择,您可以选择以下两种方式:…

    数据库 2023年5月24日
    085
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球