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

首頁 > 數據庫 > MySQL > 正文

MYSQL IN 與 EXISTS 的優化示例介紹

2024-07-24 13:06:05
字體:
來源:轉載
供稿:網友
當B表的數據集必須小于A表的數據集時,用in優于exists,當A表的數據集系小于B表的數據集時,用exists優于in
 
 

優化原則:小表驅動大表,即小的數據集驅動大的數據集。

############# 原理 (RBO) #####################

select * from A where id in (select id from B)等價于:for select id from Bfor select * from A where A.id = B.id

當B表的數據集必須小于A表的數據集時,用in優于exists。

select * from A where exists (select 1 from B where B.id = A.id)等價于for select * from Afor select * from B where B.id = A.id

當A表的數據集系小于B表的數據集時,用exists優于in。

注意:A表與B表的ID字段應建立索引。

例如:

/** 執行時間:0.313s **/SELECT SQL_NO_CACHE * FROM rocky_member m WHERE EXISTS (SELECT 1 FROM rocky_vip_appro a WHERE m.ID = a.user_id AND a.passed = 1);/** 執行時間:0.160s **/SELECT SQL_NO_CACHE * FROM rocky_member m WHERE m.ID in(SELECT ID FROM rocky_vip_appro WHERE passed = 1);

not in 和not exists用法類似。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 治县。| 城步| 永川市| 营口市| 宁波市| 卢氏县| 新干县| 玉树县| 海南省| 沅江市| 临邑县| 大洼县| 彭阳县| 镇原县| 施秉县| 江孜县| 扎鲁特旗| 海兴县| 南漳县| 忻州市| 许昌县| 济源市| 法库县| 郁南县| 黄陵县| 涞源县| 芦溪县| 青州市| 新兴县| 姜堰市| 收藏| 乳源| 海口市| 遂昌县| 曲靖市| 新闻| 浑源县| 卓资县| 西丰县| 东港市| 古浪县|