常用的SQL語句 三 In與Exist的區別

2022-07-20 18:12:08 字數 1275 閱讀 2824

in       ------ 遍歷

exists ------- 檢索到滿足條件即退出

not exists --------檢索到不滿足條件即退出

本質區別:

exists 由於exist屬於外驅動,故會利用索引來檢索資料

in 則屬於內驅動 故不能利用索引檢索資料

其中,in和not in類似全表掃瞄,效率低,一般用 exist和notexist代替其用法。

使用環境:

*exists 使用外連線查詢時用到。

*in    使用內連線查詢時用到。

from tb_expo

where expoclassid in (select classid from tb_expo_class where parentid=0)

等價於:

select top 10 a.exponame from tb_expo a,

(select classid from tb_expo_class where parentid=0) b

where a.expoclassid= b.classid

而exist不同:

select top 10 exponame,expoclassid from tb_expo e

where exists (select 0 from tb_expo_class where parentid=0)

sql:

set   serveroutput  on;

declare

l_count integer;

begin

for tb_expo in (select exponame,expoclassid from tb_expo) loop

select count(*) into l_count from tb_expo_class

where parentid = 0

if l_count != 0 then

dbms_output.put_line(e.exponame);

end if;

end loop;

end

在查詢資料量大的時候就會體現出效率來。

當然,也不能說exist就比in好。

如果select 0 from tb_expo_class where parentid=0

查詢出來的資料量很少的話,還是 in 效率更高些。

三條常用的sql語句

定義 表和表之間的資料以縱向的方式連線在一起。之前的內連線,外連線都是以橫向的方式連線在一起 注意,union 內部的每個 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每個 select 語句中的列的順序必須相同。sql union 語法 select column n...

SQL三 常用語句

如果第乙個條件和第二個條件都成立,則 and 運算子顯示一條記錄。如果第乙個條件和第二個條件中只要有乙個成立,則 or 運算子顯示一條記錄。您也可以把 and 和 or 結合起來 使用圓括號來組成複雜的表示式 select from websites where alexa 15 and count...

sql常用sql語句

1 查詢某個庫中所有的表名字 select name from sysobjects where xtype u and name dtproperties order by name 2 得到資料庫中所有使用者檢視 select name from sysobjects where xtype v...