一般来说,是否有使用子选择的时间和何时使用内连接的经验法则?对我来说,它通常是硬币翻转,因为我不太了解内部。
我什么时候应该使用哪个?
SELECT item1, item2 FROM table1
INNER JOIN table2 on table1.field=table2.field
或 -
SELECT item1, item2 FROM table1 WHERE field in
(SELECT field FROM table2)
答案 0 :(得分:2)
我认为类似的子查询版本应该是:
SELECT item1, item2 FROM table1
WHERE EXISTS (SELECT 1 FROM table2 WHERE table.field = table2.field)
在具有强大查询优化器的RDBMS中,它们应该是无法区分的,因为可以自动转换为另一个。显然MySQL尚未进入该联盟,JOIN
优于相关的子查询。
答案 1 :(得分:0)
通常JOIN比子查询
更快当子查询的结果集非常小时,子查询可能会更快。
这也取决于RDBMS优化。