EXIST:
1.当从表比主表大时,EXISTS查询的效率较高
2.exists是先从主查询中取得一条数据,再代入到子查询中,执行一次子查询,判断子查询是否能返回结果,主查询有多少条数据,子查询就要执行多少次
例如:
SELECT *
FROM employees
WHERE NOT EXISTS (SELECT emp_no
FROM dept_emp
WHERE employees.emp_no = dept_emp.emp_no);
(exist不需要给定要监督的具体列)
IN:
1.当主表比从表大时,IN查询的效率较高
2. in是先执行子查询,得到一个结果集,将结果集代入外层谓词条件执行主查询,子查询只需要执行一次
例如:
SELECT *
FROM employees
WHERE emp_no NOT IN (SELECT emp_no
FROM dept_emp);
(in需要给定要监督的具体列名)