mysql - SQL中JOIN与子查询的优劣
PHP中文网
PHP中文网 2017-04-17 11:06:02
[MySQL讨论组]

我是个MySQL新手,在涉及多表查询时,喜欢使用子查询,简单易懂。

SELECT * FROM *** WHERE id IN (SELECT ***);

但也发现很多人用JOIN同样能实现查询结果,我想知道JOIN相比子查询,在性能方面有什么优势吗?
我该如何理解JOIN语句呢?

PHP中文网
PHP中文网

认证0级讲师

全部回复(7)
PHP中文网

对于mysql,从来都不推荐使用子查询和join。因为本身join的效率就是硬伤,一旦数据量上去效率很难保证,强烈推荐分别根据索引单表取数据,然后在程序里面做join,merge数据。

ringa_lee

我没有仔细了解过其中的差异,不过对于数据比较少(压力不大)的情况,两种都是可用的,估计性能差不了多少;对于数据量大的情况下,JOIN和子查询都是不可接受的,需要额外的优化(比如用nosql做缓存什么的)。

黄舟

我觉得小数据量无所谓,大数据量又不会用这种办法了。

巴扎黑

小数据量无所谓,大数据量下还是极力避免吧。

大家讲道理

具体性能我不清楚。不过我看别人说,是用join代替子查询。

PHP中文网

子查询就别用了,效率太差,如果是JOIN的话,它是走嵌套查询的。小表驱动大表,且通过索引字段进行关联。如果表记录比较少的话,还是OK的。大的话业务逻辑中可以控制处理。

伊谢尔伦

通常用join
如果是做分析就用join

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号