資源描述:
《SQL語句執(zhí)行效率.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、SQL語句執(zhí)行效率SQL語句中,IN、EXISTS、NOTIN、NOTEXISTS的效率較低,尤其是后兩種語句,當(dāng)數(shù)據(jù)量較大時,更常給人一種死機(jī)般的感覺。本文提供一種使用連接的方法代替以上的四種語句,可大副提高SQL語句的運(yùn)行效率。以NOTIN為例,當(dāng)數(shù)據(jù)量達(dá)到一萬時,效率可提高20倍,數(shù)據(jù)量越大,效率提高的幅度也就越大。1)SELECT語句中的中的效率提高方法SQL語句如下:CREATETABLETAB1(COL1VARCHAR(20)NOTNULL,COL2INTEGER,PRIMARYKEY(COL1));CREATETAB
2、LETAB2(COL1VARCHAR(20)NOTNULL,PRIMARYKEY(COL1));CREATETABLETAB3(COL1VARCHAR(20)NOTNULL,PRIMARYKEY(COL1));下面,我們將舉2個例子來具體說明使用連接替換IN、NOTIN、EXISTS、NOTEXISTS的方法?!∽x取表1中第2列(COL2)數(shù)據(jù)的總和,且其第1列數(shù)據(jù)存在于表2的第1列中。1.使用IN的SQL語句:SELECTSUM(COL2)FROMTAB1WHERECOL1IN(SELECTCOL1FROMTAB2)2.使用EX
3、ISTS的SQL語句:SELECTSUM(COL2)FROMTAB1WHEREEXISTS(SELECT*FROMTAB2WHERETAB1.COL1=TAB2.COL1)3.使用連接的SQL語句:SELECTSUM(A.COL2)FROMTAB1A,TAB2BWHEREA.COL1=B.COL1 讀取表1中第2列(COL2)數(shù)據(jù)的總和,且其第1列數(shù)據(jù)不存在于表2的第1列中。1.使用NOTIN的SQL語句:SELECTSUM(COL2)FROMTAB1WHERECOL1NOTIN(SELECTCOL1FROMTAB2)2.使用NO
4、TEXISTS的SQL語句:SELECTSUM(COL2)FROMTAB1WHERENOTEXISTS(SELECT*FROMTAB2WHERETAB1.COL1=TAB2.COL1)3.使用外連接的SQL語句:SELECTSUM(A.COL2)FROMTAB1A,TAB2BWHEREA.COL1=B.COL1(+)ANDB.COL1ISNULL2)DELETE語句中的效率提高方法SQL語句如下:CREATETABLETA(CAINT)CREATETABLETB(CAINT)CREATETABLETC(CAINT)1.用IN的SQ
5、L語句:DELETEFROMTAWHERETA.CAIN(SELECTCAFROMTB)2.用EXISTS的SQL語句:DELETEFROMTAWHEREEXISTS(SELECT*FROMTBWHERETB.CA=TA.CA)3.使用連接的SQL語句:DELETETAFROMTA,TBWHERETA.CA=TB.CA 刪除表A中表A存在但表B中不存在的數(shù)據(jù)1.使用IN的SQL語句:DELETEFROMTAWHERETA.CANOTIN(SELECTCAFROMTB)2.使用EXISTS的SQL語句:DELETEFROMTAWHE
6、RENOTEXISTS(SELECTCAFROMTBWHERETB.CA=TA.CA)3.使用連接的SQL語句:DELETETAFROMTALEFTOUTERJOINTBONTA.CA=TB.CAWHERETB.CAISNULL3)UPDATE語句中的效率提高方法更新表A中表A和表B相同的數(shù)據(jù)1.使用IN的SQL語句:UPDATETASETCA=CA+10000WHERECAIN(SELECTCAFROMTB)2.使用EXISTS的SQL語句:UPDATETASETCA=CA+10000WHEREEXISTS(SELECTCAFR
7、OMTBWHERETB.CA=TA.CA)3.使用連接的SQL語句:UPDATETASETTA.CA=TA.CA+10000FROMTA,TBWHERETA.CA=TB.CA更新表A中表A存在但表B中不存在的數(shù)據(jù)1.使用IN的SQL語句:UPDATETASETCA=CA+10000WHERECANOTIN(SELECTCAFROMTB)2.使用EXISTS的SQL語句:UPDATETASETCA=CA+10000WHERENOTEXISTS(SELECTCAFROMTBWHERETB.CA=TA.CA)3.使用連接的SQL語句:U
8、PDATETASETTA.CA=TA.CA+10000FROMTALEFTOUTERJOINTBONTA.CA=TB.CAWHERETB.CAISNULL================================方法一、盡量使用復(fù)雜的SQL來