SQL查詢語句

2021-08-23 15:36:50 字數 1240 閱讀 9281

一、sql語句優化:

1: exists 快於in

2: 資料量小時連線查詢快於子查詢,資料量大時子查詢快於連線查詢

3: select (*) 快於 select count(col)

4: 連線查詢快於from多個表查詢

如果查詢結果**於多個表中則用連線查詢,如果最後結果**於乙個中則推薦用子查詢

二、in可以分為三類: 

1、形如select  *  from  t1  where  f1  in  ('a','b'),應該和select  *  from  t1  where  f1  ='a'  or  f1='b'  或者  select  *  from  t1  where  f1  ='a'  union  all  select  *  from  t1  f1='b'比較效率,摟主可能指的不是這一類,這裡不做討論。 

2、形如select  *  from  t1  where  f1  in  (select  f1  from  t2  where  t2.fx='x'),其中子查詢的where 裡的條件不受外層查詢的影響,這類查詢一般情況下,自動優化會轉成exist語句,也就是效率和exist一樣。 

3、形如select  *  from  t1  where  f1  in  (select  f1  from  t2  where  t2.fx=t1.fx),其中子查詢的where 裡的條件受外層查詢的影響,這類查詢的效率要看相關條件涉及的字段的索引情況和資料量多少,一般認為效率不如exists。 

除了第一類in語句都是可以轉化成exists  語句的,一般程式設計習慣應該是用exists而不用in. 

三、如a,b兩個表, 

當只顯示乙個表的資料如a,關係條件只乙個如id時,使用in更快: 

select  *  from  a  where  id  in  (select  id  from  b) 

當只顯示乙個表的資料如a,關係條件不只乙個如id,col1時,使用in就不方便了,可以使用exists: 

select  *  from  a  where  exists  (select  1  from  b  where  id  =  a.id  and  col1  =  a.col1) 

當只顯示兩個表的資料時,使用in,exists都不合適,要使用連線: 

select  *  from  a  left  join  b  on  id  =  a.id   

所以使用何種方式,要根據要求來定。

sql 語句 查詢

例11 1 1 use xk gocreate trigger test1 on student for update as print 記錄已修改!go 2 update student set pwd 11111111 where stuno 00000001 例11 3 1 use xk go...

SQL查詢語句

create or replace procedure imms pk reportsend fromdate varchar2,todate varchar2 as function 系統效能統計 author qja 功能 將imms statusreport 表和imms report sen...

sql查詢語句

條件查詢 select 列名列表 from 表名 where 條件 where 條件 用來篩選滿足條件的記錄 行 條件有6種形式 1.比較大小 列名 比較運算子 值 查詢圖書 超過30元的圖書資訊 select from book where price 30 查詢清華大學出版社出版的圖書資訊 se...