用MySQL MCP 优化 SQL实战

最近几天都在优化之前的 SQL,一看 SQL 都是 5-6 个表连表还有各种子查询,看起来主打一个头大。
正常的优化思路心路历程分享一下: 首先是查看每一个表的数据,根据表数据查询是否存在合理,然后根据数据量进行连表查询,由少到多的一个过程,尽可能减少表的行数,然后再根据对应的数据是否有索引覆盖。

为什么要用 MCP ? 因为用 MYSQL MCP 可以减少自己对于字段的识别和查询,以及索引是否覆盖。

MySQL 联表查询流程详解

MySQL 的联表查询(JOIN)是通过将多个表中的数据按照关联条件组合起来的过程。以下是联表查询的基本流程和内存处理方式:

联表查询的基本流程

  1. 确定驱动表

    • MySQL 优化器会选择一个表作为驱动表(通常是较小的表或WHERE条件筛选后结果较少的表)
    • 驱动表的数据会被首先读取到内存中
  2. 处理驱动表

    • 执行驱动表的WHERE条件过滤
    • 将过滤后的结果存储在内存的join buffer
  3. 连接被驱动表

    • 对于驱动表中的每一行(或一批行),在被驱动表中查找匹配的行
    • 根据JOIN条件(ON子句)进行匹配
  4. 组合结果

    • 将匹配的行组合成结果集的一行
    • 如果使用了LEFT/RIGHT JOIN,即使没有匹配也会保留驱动表/被驱动表的行

数据存储位置

    <
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值