相关和非相关查询区别

相关和非相关查询区别
--求各部门人数
--格式:select d.*,0 人数 from dept d
select d.*,
(
  select count(*) from emp e
  where e.deptno=d.deptno
) 人数
from dept d
select d.* from dept d
部门:
10
select count(*) from emp e   where e.deptno=10
20
select count(*) from emp e   where e.deptno=20
30
select count(*) from emp e   where e.deptno=30
40
select count(*) from emp e   where e.deptno=40
50
select count(*) from emp e   where e.deptno=50
60
select count(*) from emp e   where e.deptno=60
对于部门表的每一条记录,都要单独执行一次子查询,所以称为相关子查询。
列出薪金比“SMITH”多的所有员工
select * from emp e
where e.sal>
(
  select e.sal from emp e  where e.ename='SMITH'
)
smith的值只求一次,这个值对于emp中所有记录都是一样的,即不与各记录相关,所以称为非相关子查询。

分析:效率高的是:非相关。
原因:相关子查询执行统计的次数太多

 

你可能感兴趣的:(区别)