国产探花免费观看_亚洲丰满少妇自慰呻吟_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效率高多了
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 彰武县| 佛山市| 陆丰市| 荥阳市| 建水县| 富川| 军事| 乐都县| 黄石市| 阿尔山市| 巴里| 内黄县| 宜兴市| 汕头市| 满洲里市| 秀山| 泸定县| 饶河县| 庄河市| 金山区| 呼和浩特市| 连平县| 东乌珠穆沁旗| 屏山县| 益阳市| 长武县| 陆丰市| 玉门市| 石首市| 康马县| 垣曲县| 东辽县| 怀仁县| 禹州市| 象州县| 武城县| 平邑县| 呼图壁县| 巩留县| 平度市| 石家庄市|