相關和非相關查詢區別

相關和非相關查詢區別
--求各部門人數
--格式: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中所有記錄都是一樣的,即不與各記錄相關,所以稱爲非相關子查詢。


分析:效率高的是:非相關。
原因:相關子查詢執行統計的次數太多。

發佈了1 篇原創文章 · 獲贊 0 · 訪問量 2861
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章