• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MYSQL IN 与 EXISTS 的优化示例介绍

MYSQL IN 与 EXISTS 的优化示例介绍

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql in exists,mysql if not exists,mysql exists,mysql exists用法,mysql not exists等相关知识,希望本文的分享对您有所帮助

优化原则:小表驱动大表,即小的数据集驱动大的数据集。

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

select * from A where id in (select id from B)
等价于:
for select id from B
for select * from A where A.id = B.id
</div>

当B表的数据集必须小于A表的数据集时,用in优于exists。

select * from A where exists (select 1 from B where B.id = A.id)
等价于
for select * from A
for select * from B where B.id = A.id
</div>

当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);
</div>

not in 和not exists用法类似。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MYSQL IN 与 EXISTS 的优化示例介绍

相关文章

  • 2018-12-05如何在mysql5.6及以下版本查询数据库里的json详情
  • 2018-12-05MySQL OOM 系列一 Linux内存分配_MySQL
  • 2018-12-05一些有用的sql语句整理 推荐收藏
  • 2018-12-05SQLServer 2008中SQL增强之二 Top新用途
  • 2018-12-05Python MySQL进行数据库表变更和查询
  • 2018-12-05oracle常用sql语句
  • 2018-12-05Access使用宏控制程序--1.6.使用宏的几点说明
  • 2018-12-05全面接触SQL语法(7)
  • 2018-12-05MySQL 通用查询日志(General Query Log)
  • 2018-12-05有关名表的文章推荐10篇

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 优化 SQL Server 索引的小技巧
    • MySQL OOM 系列一 Linux内存分配_MySQL
    • 解析mysql中max_connections与max_user_connections的区别
    • MySQL之-分库分表的技巧分享
    • Oracle收购TimesTen 提高数据库软件性能
    • MySQl在开发和生产不同环境下的索引对比
    • 教你一个快速安装mysql的方法实例
    • 使用MySQL中的AVG函数求平均值的教程
    • mysql大表中count()的用法以及mysql中count()的优化
    • 目前用到的两个分页存储过程代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有