SQL語句執(zhí)行效率及分析

SQL語句執(zhí)行效率及分析

ID:40491404

大?。?3.69 KB

頁數(shù):15頁

時間:2019-08-03

SQL語句執(zhí)行效率及分析_第1頁
SQL語句執(zhí)行效率及分析_第2頁
SQL語句執(zhí)行效率及分析_第3頁
SQL語句執(zhí)行效率及分析_第4頁
SQL語句執(zhí)行效率及分析_第5頁
資源描述:

《SQL語句執(zhí)行效率及分析》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。

1、1.關(guān)于SQL查詢效率,100w數(shù)據(jù),查詢只要1秒,與您分享:機器情況p4:2.4內(nèi)存:1Gos:windows2003數(shù)據(jù)庫:mssqlserver2000目的:查詢性能測試,比較兩種查詢的性能SQL查詢效率stepbystep--setp1.--建表createtablet_userinfo(useridintidentity(1,1)primarykeynonclustered,nickvarchar(50)notnulldefault'',classidintnotnulldefault0,writetimedatetimenotnulld

2、efaultgetdate())go--建索引createclusteredindexix_userinfo_classidont_userinfo(classid)go--step2.declare@iintdeclare@kintdeclare@nickvarchar(10)set@i=1while@i<1000000beginset@k=@i%10set@nick=convert(varchar,@i)insertintot_userinfo(nick,classid,writetime)values(@nick,@k,getdate())s

3、et@i=@i+1end--耗時08:27,需要耐心等待--step3.selecttop20userid,nick,classid,writetimefromt_userinfowhereuseridnotin(selecttop900000useridfromt_userinfoorderbyuseridasc)--耗時8秒,夠長的--step4.selecta.userid,b.nick,b.classid,b.writetimefrom(selecttop20a.useridfrom(selecttop900020useridfromt_u

4、serinfoorderbyuseridasc)aorderbya.useriddesc)ainnerjoint_userinfobona.userid=b.useridorderbya.useridasc--耗時1秒,太快了吧,不可以思議--step5where查詢selecttop20userid,nick,classid,writetimefromt_userinfowhereclassid=1anduseridnotin(selecttop90000useridfromt_userinfowhereclassid=1orderbyuseri

5、dasc)--耗時2秒--step6where查詢selecta.userid,b.nick,b.classid,b.writetimefrom(selecttop20a.useridfrom(selecttop90000useridfromt_userinfowhereclassid=1orderbyuseridasc)aorderbya.useriddesc)ainnerjoint_userinfobona.userid=b.useridorderbya.useridasc--查詢分析器顯示不到1秒.查詢效率分析:子查詢?yōu)榇_保消除重復(fù)值,必須為

6、外部查詢的每個結(jié)果都處理嵌套查詢。在這種情況下可以考慮用聯(lián)接查詢來取代。如果要用子查詢,那就用EXISTS替代IN、用NOTEXISTS替代NOTIN。因為EXISTS引入的子查詢只是測試是否存在符合子查詢中指定條件的行,效率較高。無論在哪種情況下,NOTIN都是最低效的。因為它對子查詢中的表執(zhí)行了一個全表遍歷。建立合理的索引,避免掃描多余數(shù)據(jù),避免表掃描!幾百萬條數(shù)據(jù),照樣幾十毫秒完成查詢.2.SQL提高查詢效率2008-05-1221:201.對查詢進行優(yōu)化,應(yīng)盡量避免全表掃描,首先應(yīng)考慮在where及orderby涉及的列上建立索引。2.應(yīng)盡

7、量避免在where子句中對字段進行null值判斷,否則將導(dǎo)致引擎放棄使用索引而進行全表掃描,如:selectidfromtwherenumisnull可以在num上設(shè)置默認(rèn)值0,確保表中num列沒有null值,然后這樣查詢:selectidfromtwherenum=03.應(yīng)盡量避免在where子句中使用!=或<>操作符,否則將引擎放棄使用索引而進行全表掃描。4.應(yīng)盡量避免在where子句中使用or來連接條件,否則將導(dǎo)致引擎放棄使用索引而進行全表掃描,如:selectidfromtwherenum=10ornum=20可以這樣查詢:selectid

8、fromtwherenum=10unionallselectidfromtwherenum=205.in和notin也要慎

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費完成后未能成功下載的用戶請聯(lián)系客服處理。