国产探花免费观看_亚洲丰满少妇自慰呻吟_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用法類似。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 通许县| 安龙县| 彰武县| 砚山县| 南昌县| 呼和浩特市| 泰来县| 张家界市| 宝坻区| 闵行区| 若尔盖县| 正镶白旗| 荣昌县| 伊宁市| 大港区| 东乌珠穆沁旗| 应用必备| 伊金霍洛旗| 绥化市| 梅州市| 平乐县| 原阳县| 措勤县| 孟州市| 兰考县| 将乐县| 阳东县| 抚远县| 宜都市| 南乐县| 襄城县| 大冶市| 柞水县| 铁岭市| 河曲县| 体育| 屏山县| 台前县| 正定县| 汕尾市| 同德县|