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

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

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

2020-07-25 13:38:31
字體:
來源:轉載
供稿:網友
在許多基于基礎表的查詢中,為了滿足一個條件,往往需要對另一個表進行聯接。在這種情況下, 使用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效率高多了 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 称多县| 临洮县| 栾城县| 沐川县| 米泉市| 平乡县| 桑植县| 达日县| 阿图什市| 肥西县| 侯马市| 包头市| 凌云县| 洛扎县| 韶关市| 延吉市| 阿鲁科尔沁旗| 前郭尔| 红河县| 通州市| 吴旗县| 新巴尔虎左旗| 册亨县| 航空| 清原| 永年县| 萝北县| 巧家县| 苍梧县| 恩施市| 宜宾市| 景德镇市| 邛崃市| 固镇县| 蕲春县| 西吉县| 天等县| 巍山| 罗平县| 汉源县| 金湖县|