我了解到,我可以重写像
这样的查询SELECT d
FROM tbl1
WHERE a in (
SELECT b
FROM tbl2
WHERE c = "Something"
)
进入(在我看来更快)查询:
SELECT d
FROM tbl1 LEFT JOIN tbl2
ON tbl1.a = tbl2.b
WHERE tbl2.c = "Something"
但我在重写以下查询时遇到问题:
SELECT name, nick
FROM cu
WHERE uid IN (
SELECT friend
FROM cf
WHERE user IN (
SELECT uid
FROM cu
WHERE sid = "abc"
)
)
修改:
刚刚找到它:Left Join Optimization
答案 0 :(得分:4)
这应该是等价的:
select cu.*
from cu join
cf
on cu.uid = cf.friend join
cu cu2
on cu2.uid = cf.user
where cu2.sid = 'abc';
请注意,您只需要内部联接。