Mysql小表驱动大表优化原理
MySQL 小表驱动大表优化原理详解“小表驱动大表”是 MySQL 中 JOIN 优化时最核心、最常被提及的原则之一很多面试和实际优化案例都会问到这个点。下面从原理、执行过程、为什么重要、实际影响、常见误区几个维度给你讲清楚。1. 核心原理Nested Loop Join嵌套循环连接MySQL 最常用的 Join 算法是Nested Loop Join嵌套循环连接它的执行方式是for each row in 驱动表 (外表) for each row in 被驱动表 (内表) if 连接条件成立 输出结果关键点就在这里外层循环驱动表每执行一次内层循环被驱动表就要完整扫描一次或者通过索引快速查找。所以驱动表执行的次数越少整个 Join 的总扫描量就越小。结论让行数少的表做驱动表外表行数多的表做被驱动表内表就能显著减少总的扫描行数和 IO 量。2. 用例子看清楚差距假设有两张表小表user100 行大表order1000 万 行场景 1小表驱动大表推荐SELECT*FROMuseruJOINorderoONu.ido.user_id;执行过程假设 user_id 有索引扫描 user 表 100 次外层循环每行 user 去 order 表通过索引查找匹配的记录平均 1 次索引查找总查找次数 ≈ 100 次场景 2大表驱动小表低效SELECT*FROMorderoJOINuseruONo.user_idu.id;执行过程扫描 order 表 1000 万次外层循环每行 order 去 user 表通过索引查找平均 1 次总查找次数 ≈ 1000 万次差距100 次 vs 1000 万次差了10 万倍这就是为什么一定要“小表驱动大表”。3. MySQL 是怎么决定谁是驱动表、谁是被驱动表的MySQL 优化器主要看以下因素优先级从高到低显式写法FROM 后面的表顺序早期版本会倾向于把 FROM 第一个表作为驱动表但现在优化器更智能表行数统计信息优化器通过information_schema.tables或 innodb_table_stats 中的 rows 字段估算表的大小行数少的表更大概率被选为驱动表索引情况被驱动表上连接字段是否有高效索引ref、eq_ref、range有索引的表更容易被选为被驱动表过滤条件后的预计行数最重要优化器会根据 WHERE 条件、JOIN 条件估算每个表过滤后的行数过滤后行数少的表更容易成为驱动表EXPLAIN 看 driving tableexplainselect...fromsmall_table sjoinbig_table bon...看 Extra 列Using join buffer (Block Nested Loop)→ 块嵌套循环大表驱动小表常见没有 join buffer → 通常是小表驱动大表4. 什么时候“小表驱动大表”会被打破STRAIGHT_JOIN强制指定驱动表顺序SELECT*FROMbig_table STRAIGHT_JOIN small_tableON...被驱动表连接字段没有索引→ 可能退化为全表扫描代价极大子查询转 JOIN时子查询结果集很大优化器统计信息不准最常见坑5. 实际优化建议生产环境最常用写 SQL 时尽量把小表写在前面养成习惯但不要完全依赖在连接字段上建索引被驱动表必须有定期执行 ANALYZE TABLE 更新统计信息大表 JOIN 前加过滤条件尽量把数据量打小SELECT*FROMuseruJOINorderoONu.ido.user_idWHEREu.statusactiveANDo.create_time2025-01-01;如果表大小差距极大且无法优化考虑把小表查出来后在代码里循环查大表分批用临时表或物化视图业务上避免这种 JOIN6. 总结一句话口诀“小表驱动大表减少嵌套循环的扫描次数被驱动表要有索引连接字段要高效。”面试回答模板简洁版“因为 MySQL 默认使用 Nested Loop Join驱动表每行都要去被驱动表匹配一次所以让行数少的表做驱动表可以大幅减少总的扫描和匹配次数。优化器会根据表行数、索引情况、过滤后行数来选择驱动表所以我们写 SQL 时尽量把小表放前面并确保被驱动表的连接字段有索引。”你最近遇到过 JOIN 性能问题吗是哪种场景可以贴执行计划我帮你看下。

相关新闻

学霸都在用!2026AI 论文生成软件榜单,科研党亲测好用

学霸都在用!2026AI 论文生成软件榜单,科研党亲测好用

在 2026 年的学术战场上,AI 论文工具已从 “辅助选项” 升级为 “科研标配”。本文精选 8 款实测无坑的 AI 论文神器,覆盖从选题到答辩的全流程,兼顾免费开源、全能付费、垂直领域三大场景,特别标注适合本科生 / 硕博 / 期刊作者的…

2026/5/17 3:39:34 阅读更多 →
Git Flow 详解与最佳实践:打造规范高效的团队协作流程

Git Flow 详解与最佳实践:打造规范高效的团队协作流程

在软件开发过程中,分支管理策略直接影响团队协作效率、代码质量和发布稳定性。而 Git Flow 正是其中一种经典且被广泛采用的 Git 分支模型。本文将深入讲解 Git Flow 的核心思想、分支角色、操作流程,并结合实际场景给出最佳实践建议,助你构建…

2026/5/17 3:39:33 阅读更多 →
赶deadline必备! 10个降AI率平台深度测评,继续教育必看

赶deadline必备! 10个降AI率平台深度测评,继续教育必看

在继续教育的学术写作中,论文质量与查重率是每一位学习者必须面对的重要课题。随着AI技术的广泛应用,越来越多的学生开始使用AI工具辅助写作,但随之而来的AIGC率过高问题也逐渐成为困扰。如何在保持文章逻辑和语义通顺的前提下,有…

2026/7/3 5:04:43 阅读更多 →

最新新闻

从测试框架到智能体:构建自适应Web自动化测试新范式

从测试框架到智能体:构建自适应Web自动化测试新范式

1. 项目概述:从“无Harness”到“测试Agent”的自动化测试新范式最近在团队里推动Web自动化测试落地时,我们遇到了一个经典困境:测试脚本的维护成本高得吓人。每次前端页面改个按钮ID、加个CSS类名,或者后端接口字段调整&#xff…

2026/7/3 8:44:28 阅读更多 →
软考与华为认证路径全拆解,从报名周期、考试难度到续证成本,一文看透隐藏成本!

软考与华为认证路径全拆解,从报名周期、考试难度到续证成本,一文看透隐藏成本!

更多请点击: https://intelliparadigm.com 第一章:软考与华为认证HCIP/HCIE区别 软考(全国计算机技术与软件专业技术资格(水平)考试)与华为认证(HCIP/HCIE)在定位、目标人群、知识体…

2026/7/3 8:42:27 阅读更多 →
软考高级/中级/初级证书继续教育学分要求全对比,3张表说清每年必修24学分背后的逻辑与替代方案

软考高级/中级/初级证书继续教育学分要求全对比,3张表说清每年必修24学分背后的逻辑与替代方案

更多请点击: https://intelliparadigm.com 第一章:软考证书继续教育学分制度的政策演进与核心定位 软考(计算机技术与软件专业技术资格(水平)考试)证书持有人的继续教育学分管理,是国家对信息技…

2026/7/3 8:42:27 阅读更多 →
OpenCode模型配置与切换:本地AI编程的可控性实践

OpenCode模型配置与切换:本地AI编程的可控性实践

1. 项目概述:这不是一个“装完就能用”的玩具,而是一把需要亲手校准的代码刻刀 OpenCode——这个名字在2024年中后期开始频繁出现在国内开发者社区的技术分享帖、内部工具链讨论组和AI辅助编程评测报告里。它不是GitHub Copilot的平替,也不是…

2026/7/3 8:40:27 阅读更多 →
5步彻底解决OFD文件兼容性问题:开源转换工具实战指南

5步彻底解决OFD文件兼容性问题:开源转换工具实战指南

5步彻底解决OFD文件兼容性问题:开源转换工具实战指南 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 你是否曾经因为收到OFD格式的电子发票而无法在手机上查看?是否因为政府发…

2026/7/3 8:38:26 阅读更多 →
AI知识库投喂:企业智能化的关键一步

AI知识库投喂:企业智能化的关键一步

于企业智能化转型的浪潮里面, AI知识库已然变成提升工作效率以及决策质量的核心工具。可是呢, 好多企业在部署AI知识库之际, 常常忽视了“投喂”这个关键环节。所说的“投喂”, 是把企业内部的结构化还有非结构化数据, 像项目文档、会议纪要、客户资料、技术手册等, 有系统地输…

2026/7/3 8:38:26 阅读更多 →

日新闻

Nginx防御TLS重协商攻击实战:从原理到配置与监控

Nginx防御TLS重协商攻击实战:从原理到配置与监控

1. 项目概述:为什么TLS重协商攻击至今仍需警惕十多年前的CVE-2011-1473,一个关于TLS/SSL协议重协商机制的漏洞,现在提起来还有必要吗?很多运维和开发朋友可能会觉得,这都老掉牙了,现代服务器和客户端不都默…

2026/7/3 0:03:59 阅读更多 →
华为防火墙双通道远程管理实战:Web与SSH配置详解

华为防火墙双通道远程管理实战:Web与SSH配置详解

1. 项目概述:为什么需要双通道远程管理防火墙?在任何一个稍具规模的企业网络里,防火墙都是那个默默守护在边界的关键角色。作为网络工程师,我们不可能每次都跑到机房,插上console线去配置它。远程管理能力,…

2026/7/3 0:03:59 阅读更多 →
AD74413R与PIC18F65K40的高精度工业数据采集方案

AD74413R与PIC18F65K40的高精度工业数据采集方案

1. 项目概述:AD74413R与PIC18F65K40的协同工作在工业自动化和精密测量领域,同时实现高精度模数转换(ADC)和数模转换(DAC)功能是许多复杂系统的核心需求。AD74413R作为一款四通道可配置模拟输入/输出器件,与PIC18F65K40微控制器的组合&#xf…

2026/7/3 0:05:59 阅读更多 →

周新闻

月新闻