日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle 半连接 效率,关于oracle中的半连接

發布時間:2024/1/23 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle 半连接 效率,关于oracle中的半连接 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

表的連接在sql語句中尤為重要。外連接,內連接,半連接,反連接等等各種連接,看似簡單的一個連接里面還是有不少的細節的。對于sql調優來說也是很重要的。

像下面的形式的sql就屬于半連接,使用了in子句,對于exists的實現也是屬于半連接。

--in半連接

SQL> select dname from dept dept where deptno in (select deptno from emp emp);

DNAME

--------------

RESEARCH

SALES

ACCOUNTING

--exists半連接

SQL> select dname from dept dept where exists (select null from emp emp where emp.deptno=dept.deptno)

2? /

DNAME

--------------

RESEARCH

SALES

ACCOUNTING

可能對于上面兩種連接大家不以為然,認為把需要用到的表直接放在from子句后效果是一致的,答案也不是肯定的。

比如下面的形式,可能輸出的結果就多了很多。大概14條記錄,但是通過半連接的方式會輸出3行記錄。

SQL> select dept.dname from dept dept,emp empwhere dept.deptno=emp.deptno;

DNAME

--------------

RESEARCH

SALES

SALES

RESEARCH

SALES

SALES

ACCOUNTING

RESEARCH

ACCOUNTING

SALES

RESEARCH

SALES

RESEARCH

ACCOUNTING

14 rows selected.

所以說如果要得到一個相同的輸出結果,還是需要distinct+inner join

SQL> select distinctdept.dname from dept dept,emp emp where dept.deptno=emp.deptno;

DNAME

--------------

ACCOUNTING

RESEARCH

SALES

對于半連接的可替換實現,大體有以下幾種方式

--使用集合

select dept.dname from dept dept,

(select deptno from dept

intersect

select deptno from emp emp)b

where dept.deptno=b.deptno ;

DNAME

--------------

ACCOUNTING

RESEARCH

SALES

--使用any

SQL> select dept.dname from dept dept where deptno=any(select deptno from emp emp);

DNAME

--------------

RESEARCH

SALES

ACCOUNTING

--使用distinct和內連接

SQL> select distinct emp.deptnofrom dept dept,emp emp

where dept.deptno=emp.deptno;

DEPTNO

----------

30

20

10

SQL> select distinct dept.deptnofrom dept dept,emp emp

where dept.deptno=emp.deptno;

DEPTNO

----------

30

20

10

大體說了下關于半連接的一些實現,可能在實際的使用中,最直觀的感受還是通過執行計劃來看到。

啟用了半連接,在執行計劃中會有semi的字樣。

也可以手動指定不需要走半連接。使用Hint no_semijoin

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的oracle 半连接 效率,关于oracle中的半连接的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。