国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

sql語句優化之用EXISTS替代IN、用NOT EXISTS替代NOT IN的語句

2024-08-31 00:56:20
字體:
來源:轉載
供稿:網友
在許多基于基礎表的查詢中,為了滿足一個條件,往往需要對另一個表進行聯接。在這種情況下, 使用EXISTS(或NOT EXISTS)通常將提高查詢的效率。在子查詢中,NOT IN子句將執行一個內部的排序和合并。無論在哪種情況下,NOT IN都是最低效的 (因為它對子查詢中的表執行了一個全表遍歷)。為了避免使用NOT IN ,我們可以把它改寫成外連接(Outer Joins)或NOT EXISTS。



我要查詢 Sendorder表中的冗余數據(沒有和reg_person或worksite相連的數據)

sql="select Sendorder.id,Sendorder.reads,Sendorder.addtime from Sendorder where Sendorder.person_id not in(select user_id from reg_person ) or Sendorder.worksite_id not in(select id from worksite) order by Sendorder.addtime desc"
程序執行時間:40109.38毫秒

sql="select Sendorder.id,Sendorder.reads,Sendorder.addtime from Sendorder where not EXISTS (SELECT id FROM reg_person where reg_person.user_id=Sendorder.person_id) or not EXISTS (SELECT id FROM worksite where worksite.id=Sendorder.worksite_id) order by Sendorder.addtime desc"
程序執行時間:8531.25毫秒

很明顯使用not EXISTS效率高多了
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 无为县| 临清市| 漯河市| 鄯善县| 永平县| 安顺市| 贡觉县| 延川县| 额敏县| 宁晋县| 临海市| 九江市| 游戏| 屯昌县| 双辽市| 江安县| 临西县| 仙游县| 会泽县| 迭部县| 商河县| 利津县| 淳安县| 平乐县| 南雄市| 洛川县| 来宾市| 河间市| 临汾市| 科尔| 青海省| 宝山区| 古交市| 镇平县| 邢台县| 平舆县| 涟源市| 康平县| 濮阳市| 新乡市| 久治县|