MySQL 关联查询速查笔记

MySQL 关联查询速查笔记

📌 核心关联类型

类型语法特点应用场景
INNER JOINA JOIN B ON...只返回两表匹配的行需要严格匹配数据的查询
LEFT JOINA LEFT JOIN B...保留左表全部数据,右表无匹配则为NULL统计时保留主表完整数据
RIGHT JOINA RIGHT JOIN B...保留右表全部数据,左表无匹配则为NULL较少使用(通常用LEFT JOIN替代)
FULL JOINUNION实现保留两表全部数据需要合并两表所有记录的特殊场景

🔍 常用查询模板

-- 基础关联查询
SELECT a.*, b.* 
FROM 主表 a
JOIN 关联表 b ON a.id = b.foreign_key;

-- 带聚合的关联统计
SELECT 
    a.id,
    a.name,
    COUNT(b.id) AS item_count
FROM 主表 a
LEFT JOIN 子表 b ON a.id = b.parent_id
GROUP BY a.id;

-- 多表级联关联
SELECT a.name, b.value, c.status
FROM 表A a
JOIN 表B b ON a.id = b.a_id
JOIN 表C c ON b.id = c.b_id;




⚡ 性能优化要点

  1. 必加索引:关联字段必须建立索引

    ALTER TABLE 子表 ADD INDEX idx_foreign_key (foreign_key);
    
  2. 查询精简原则

    • 避免 SELECT *,只查必要字段
    • 大表关联时,先过滤再JOIN
  3. 执行顺序:小表驱动大表(FROM后先写小表)

🔄 方案选型对比

方案优点缺点适用场景
关联查询数据实时准确,无冗余存储复杂查询可能较慢数据量小,变动频繁的场景
同步字段查询性能极佳需维护数据一致性数据量大,统计查询频繁的场景
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值