什么是 相关子查询 和 非相关子查询 ?
生活随笔
收集整理的這篇文章主要介紹了
什么是 相关子查询 和 非相关子查询 ?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.相關(guān)子查詢:
先執(zhí)行主查詢,再針對主查詢返回的每一行數(shù)據(jù)執(zhí)行子查詢,如果子查詢能夠返回行,則這條記錄就保留,否則就不保留。
--舉例1:相關(guān)子查詢查詢:查詢所有是領(lǐng)導(dǎo)的員工信息 select * from emp e1 where exists (select * from emp e2 where e1.empno=e2.mgr);--舉例2:相關(guān)子查詢查詢:查詢有員工的部門的信息 select * from dept d1 where exists(select * from emp e1 where e1.deptno=d1.deptno);--換言之:相關(guān)子查詢的執(zhí)行 *依賴* 于 *外部查詢*(主查詢) 的數(shù)據(jù),外部查詢執(zhí)行一行,*子查詢* 就執(zhí)行一次。2.非相關(guān)子查詢:
非相關(guān)子查詢執(zhí)行順序是先執(zhí)行子查詢,再執(zhí)行主查詢。
--舉例1:非相關(guān)子查詢:查詢所有是領(lǐng)導(dǎo)的員工信息 select * from emp where EMPNO in (select mgr from emp);--換言之:非相關(guān)子查詢是 *獨立于* 外部查詢的子查詢,子查詢總共 *執(zhí)行一次* ,執(zhí)行完畢后將值傳遞給外部查詢。總結(jié):
1、如果查詢數(shù)量比較小時:非相關(guān)子查詢比相關(guān)子查詢效率高。
2、如果查詢數(shù)量比較大時:一般不建議使用in,因為in的效率比較低,我們可以使用相關(guān)子查詢。
總結(jié)
以上是生活随笔為你收集整理的什么是 相关子查询 和 非相关子查询 ?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿龙的学习笔记---Linux GDB
- 下一篇: 截取视频片段