in是先查询里面表,再把内表结果与外表匹配,对外表使用索引,而内表多大都需要查询,不可避免,故外表大的使用in,可加快效率。
exists是对外面的表做loop循环,每次loop循环再对内表进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(所以尽量用小表)
故内表大的使用exists,可加快效率。
in适合外部表数据大于子查询的表数据的业务场景
in是先查询里面表,再把内表结果与外表匹配,对外表使用索引,而内表多大都需要查询,不可避免,故外表大的使用in,可加快效率。
exists是对外面的表做loop循环,每次loop循环再对内表进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(所以尽量用小表)
故内表大的使用exists,可加快效率。
in适合外部表数据大于子查询的表数据的业务场景