子查询或加入?

时间:2011-01-31 09:30:46

标签: mysql join subquery

我想知道是否有人可以向您解释何时使用子查询以及何时使用联接。

例如。

我有这个问题:

SELECT * from contacts where id in (select contactId from contactgrouplink where groupId = 1);

对此子查询的加入有什么好处?

4 个答案:

答案 0 :(得分:1)

请看这里讨论得很好

Subqueries vs joins

答案 1 :(得分:0)

select * from contacts x, contactgrouplink y where x.id=y.contactId and y.groupId=1

在每个查询之前使用 EXPLAIN ...查看查询的内容!

答案 2 :(得分:0)

做一个EXPLAIN,我的经验是试图摆脱DEPENDENT SUBQUERY,因为这意味着对于外部SQL语句中的每一行,都会执行一个查询。此外,您可以尝试将其实现为连接,并查看每个版本将检查多少行并从那里进行调用。

答案 3 :(得分:0)

据我所知,子查询比连接要好。 我也使用子查询Becoz“加入”是影响性能。 (根据My-Sql偏好)