我想知道是否有人可以向您解释何时使用子查询以及何时使用联接。
例如。
我有这个问题:
SELECT * from contacts where id in (select contactId from contactgrouplink where groupId = 1);
对此子查询的加入有什么好处?
答案 0 :(得分:1)
请看这里讨论得很好
答案 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偏好)