您好,匿名用户
随意问技术百科期待您的加入

SQL中JOIN与子查询的优劣

0 投票

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

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

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

用户头像 提问 2012年 12月1日 @ Zyra 上等兵 (289 威望)
分享到:

1个回答

0 投票

as described on stackoverflow.http://stackoverflow.com/questions/38...

7 down vote accepted

I would EXPECT the first query to be quicker, mainly because you have an equivalence and an explicit JOIN. In my experience IN is a very slow operator, since SQL normally evaluates it as a series of WHERE clauses separated by "OR" (WHERE x=Y OR x=Z OR...).

As with ALL THINGS SQL though, your mileage may vary. The speed will depend a lot on indexes (do you have indexes on both ID columns? That will help a lot...) among other things.

The only REAL way to tell with 100% certainty which is faster is to turn on performance tracking (IO Statistics is especially useful) and run them both. Make sure to clear your cache between runs!

用户头像 回复 2012年 12月1日 @ Apple 上等兵 (542 威望)
提一个问题:

相关问题

0 投票
1 回复 414 阅读
0 投票
1 回复 36 阅读
用户头像 提问 2012年 12月1日 @ Blitzcrank 上等兵 (358 威望)
0 投票
1 回复 66 阅读
用户头像 提问 2012年 12月1日 @ Elise 上等兵 (273 威望)
0 投票
1 回复 64 阅读
0 投票
1 回复 29 阅读
用户头像 提问 2012年 12月1日 @ Anivia 上等兵 (276 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...