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