用MySQL MCP 优化 SQL实战

MySQL 优化实战

  • MySQL 联表查询流程详解
    • 联表查询的基本流程
    • 数据存储位置
    • 常见JOIN类型的内存处理
    • 示例说明
      • 缓冲池工作原理图示
  • 安装 Mysql MCP

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

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

MySQL 联表查询流程详解

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

联表查询的基本流程

  1. 确定驱动表

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

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

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

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

你可能感兴趣的:(mysql,sql,数据库)