- in内查询的sql结果查出来,放到一个临时表中,然后遍历临时表(条件表),将临时表中的每一行带入到外查询中查找。 当外查询表大,内查询表小时,推荐使用in。用in可以减少对外查询表的循环遍历次数。
SELECT *
FROM outer_table
WHERE id IN (
SELECT id
FROM inner_table
);
- exists用于对外表记录筛选。exists会遍历外查询表,将外查询表的每一行,带入到内查询进行判断。当exists里的条件语句能够返回记录行时,条件为真,返回外表当前的记录;否则,条件为假,则当前记录丢弃。当外查询表小,内查询表大时,推荐使用exists。因为当子查询表比较大时,使用exists可以有效减少总的循环次数,来提升速度