欢迎来到天天文库
浏览记录
ID:51011099
大小:59.00 KB
页数:8页
时间:2020-03-08
《SQL语句执行效率.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、SQL语句执行效率SQL语句中,IN、EXISTS、NOTIN、NOTEXISTS的效率较低,尤其是后两种语句,当数据量较大时,更常给人一种死机般的感觉。本文提供一种使用连接的方法代替以上的四种语句,可大副提高SQL语句的运行效率。以NOTIN为例,当数据量达到一万时,效率可提高20倍,数据量越大,效率提高的幅度也就越大。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的方法。 读取表1中第2列(COL2)数据的总和,且其第1列数据存在于表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)数据的总和,且其第1列数据不存在于表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中不存在的数据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相同的数据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中不存在的数据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================================方法一、尽量使用复杂的SQL来
此文档下载收益归作者所有