IN
和 EXISTS
区别在 mysql
的多表查询中,始终要遵循的一个原则:小表驱动大表的原则
IN
in
查询相当于多个 or
条件的叠加,这个比较好理解,比如下面的查询
select * from user where user_id in (1, 2, 3);
等效于
select * from user where user_id = 1 or user_id = 2 or user_id = 3;
in
查询就是先将子查询条件的记录全都查出来,假设结果集为 B
,共有 m
条记录,然后再将子查询条件的结果集分解成 m
个,再进行 m
次查询