网易首页 > 网易号 > 正文 申请入驻

MySQL INNER JOIN:ON与WHERE的性能对比,哪个更有效?

0
分享至

前言

如下,INNER JOIN 的条件 B.status = 's' 是写在 ON 后面? 还是 WHERE 后面? 哪个效能更高?

-- 写法 A:条件在 ON 后SELECT A.name FROM A INNER JOIN B ON B.a_id = A.id and B.status = 's'-- 写法 B:连接条件在 ON,过滤条件在 WHERE  SELECT A.name FROM A INNER JOIN B ON B.a_id = A.id WHERE B.status = 's'

分析

首先,两者的结果是完全一致的,这个没异议。但是效能有差异吗?

很多人认为放到 ON 后面更好,不符合条件的直接关联不到了,不用在 WHERE 判断了。这在逻辑上是非常正确的:"提前过滤掉不符合条件的记录,减少关联计算量"。

但好消息是:现代数据库优化器已经足够聪明,两种写法通常会生成完全相同的执行计划

对于写法 B,MySQL 优化器会自动进行 条件下推(Condition Pushdown)

-- 你写的SELECT A.name FROM A INNER JOIN B ON B.a_id = A.id WHERE B.status = 's'-- 优化器实际执行的SELECT A.name FROM A INNER JOIN B ON B.a_id = A.id and B.status = 's'

不相信的话,您可以通过 EXPLAIN FORMAT=JSON 验证一下,查看执行计划中的 attached_condition 或 filter,你会发现 B.status = 's' 已经被下推到 JOIN 阶段,如下:



真正影响性能的因素

与其纠结 ON vs WHERE,不如关注这些:

A、索引;对表 B 的字段 a_id 和 status 建立联合索引,走好 NLJ算法,这是影响查询最最重要的因素,只要建立了这个索引,可以说怎么写都无所谓了。

B、数据量;如果每条表A 的数据能从表 B 关联到的数据量极大,几亿条,效能也不会太高。

建议的方式

建议 写法B;连接条件放 ON 后,过滤条件放 WHERE 后,这样看起来非常清晰、明了!

SELECT A.name FROM A INNER JOIN B ON B.a_id = A.id WHERE B.status = 's'

总结

老版本的 MySQL(< 5.5)不够智能,WHERE 条件可能真的在 JOIN 后才过滤,效能不如直接放到 JOIN 后。但是新版本的MySQL已经非常聪明了,对于效能来说放到哪里都一样了。

考虑到语义的清晰建议 写法B( 连接条件放 ON 后面,过滤条件放 WHERE 后面)。

最后,放哪里都行!要提升效能,还得是从 索引数据量 这两个大头上做文章。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
罗永浩只是西贝的梗,郭乘希才是西贝的坎

罗永浩只是西贝的梗,郭乘希才是西贝的坎

问道求真
2026-02-01 05:42:54
牛鬼神蛇现原形!聂卫平去世仅一天,私生活被扒,王刚郎平被牵连

牛鬼神蛇现原形!聂卫平去世仅一天,私生活被扒,王刚郎平被牵连

春露秋霜
2026-01-16 06:27:20
万科年报亏820亿!深圳拼死守它,真相远比你想的更吓人

万科年报亏820亿!深圳拼死守它,真相远比你想的更吓人

贩财局
2026-01-31 12:38:38
1942 年周彪转移时见秘书手插兜,忆起侦察员警告顿时惊出冷汗

1942 年周彪转移时见秘书手插兜,忆起侦察员警告顿时惊出冷汗

唠叨说历史
2026-01-29 16:05:47
1月新势力销量冠军易主,大家猜是谁?

1月新势力销量冠军易主,大家猜是谁?

玩车专家1
2026-02-01 12:12:43
卖出1.65亿颗芯片、亏了19亿,又一家芯片公司要上市

卖出1.65亿颗芯片、亏了19亿,又一家芯片公司要上市

新浪财经
2026-02-01 17:36:10
收藏:青岛市领导班子组成及分工

收藏:青岛市领导班子组成及分工

山东教育
2026-02-01 12:14:24
中国正加速抛售美债,美专家:中国用了新抛售方式,完全无法干预

中国正加速抛售美债,美专家:中国用了新抛售方式,完全无法干预

似水流年忘我
2026-01-29 01:24:08
闫学晶眼下最发愁的是如何留住儿媳妇,她清楚自儿子配不上梦迪

闫学晶眼下最发愁的是如何留住儿媳妇,她清楚自儿子配不上梦迪

观察鉴娱
2026-01-19 09:28:59
徐波生了300个孩子?揭露了人类社会的本质问题

徐波生了300个孩子?揭露了人类社会的本质问题

历史总在押韵
2025-11-17 00:05:07
美国取消伊朗官员和家属入境居留权!最早周末攻击伊朗

美国取消伊朗官员和家属入境居留权!最早周末攻击伊朗

项鹏飞
2026-01-31 16:11:28
央视曝光!真别再吃了,头皮发麻,市监局通报40批食品抽检不合格

央视曝光!真别再吃了,头皮发麻,市监局通报40批食品抽检不合格

文雅笔墨
2026-02-01 15:20:46
伊朗最高领袖顾问突访莫斯科与普京会面,商讨“重要的地区和国际问题”

伊朗最高领袖顾问突访莫斯科与普京会面,商讨“重要的地区和国际问题”

澎湃新闻
2026-01-31 16:20:05
印度一小伙,被朋友骗进医院割掉生殖器,手术后,还遭朋友逼婚…

印度一小伙,被朋友骗进医院割掉生殖器,手术后,还遭朋友逼婚…

有书
2026-01-31 16:40:03
小学生“倒数第一”试卷又火了,老师:这孩子智商太高,我教不了

小学生“倒数第一”试卷又火了,老师:这孩子智商太高,我教不了

浩源的妈妈
2026-01-27 06:29:07
江苏省委组织部最新公示

江苏省委组织部最新公示

无线徐州
2026-02-01 14:42:37
1938年深夜,叛徒葛海禄突然性瘾大发,想抢几名村妇作乐。

1938年深夜,叛徒葛海禄突然性瘾大发,想抢几名村妇作乐。

南权先生
2026-01-31 15:52:07
100元纸币,这种麒麟号码,1张价值58000元!

100元纸币,这种麒麟号码,1张价值58000元!

小陈收藏社
2026-02-01 14:14:44
终于来了!广东“双王牌”驰援杜锋,打爆上海队没悬念了?

终于来了!广东“双王牌”驰援杜锋,打爆上海队没悬念了?

绯雨儿
2026-02-01 14:03:01
中超“恒大系”复燃?曝郑智刚上任,就招募多名前恒大队友加盟!

中超“恒大系”复燃?曝郑智刚上任,就招募多名前恒大队友加盟!

罗掌柜体育
2026-02-01 10:52:47
2026-02-01 18:08:49
我不叫阿哏
我不叫阿哏
分享有趣、有用的故事!
241文章数 6339关注度
往期回顾 全部

科技要闻

腾讯元宝宣布:10亿现金红包,今日开抢

头条要闻

开年首月连打张又侠等十"虎" 反腐没有"禁区特区盲区"

头条要闻

开年首月连打张又侠等十"虎" 反腐没有"禁区特区盲区"

体育要闻

锁喉吃红牌+扇耳光 英超15人打群架

娱乐要闻

马年春晚第三次联排,多位明星现身

财经要闻

黄仁勋台北"夜宴":汇聚近40位台企高管

汽车要闻

岚图汽车1月交付10515辆 同比增长31%

态度原创

本地
数码
家居
艺术
公开课

本地新闻

云游中国|拨开云雾,巫山每帧都是航拍大片

数码要闻

REDMI Turbo 5 Max媒体评价汇总,大家认为客观吗?

家居要闻

蓝调空舍 自由与个性

艺术要闻

明代隐藏的“草书高手”,他的字无人能模仿

公开课

李玫瑾:为什么性格比能力更重要?

无障碍浏览 进入关怀版