一、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...