exits  in left join性能比较 ,笔者使用的是MYSQL数据库,这三个关键字方法在其他的关系数据库里也是大同小异,如果各种有兴趣,自行比较。

我这里有一个249_account 表,总数为8538507   249001_account_temp表 总数为 8242734

其中有部分数据,249_account里有,249_account_temp表里没有,要求找出249_account多余数据

使用上面三种方法进行查找,三种查到的数据条数都是  294451条

not exits

select count(*) from cunjk.249_account a where   not EXISTS (select card_id from bak.249001_account_temp b where a.card_id = b.card_id );    32.401s

left join

select count(*) from cunjk.249_account a left  JOIN bak.249001_account_temp b on a.card_id = b.card_id where b.card_id is null ;    22.888s

in

select count(*) from cunjk.249_account where card_id not in (select card_id from bak.249001_account_temp );   40.306s

in 用时      40.306s

not exits   32.401s

left join     22.888s

对于数据量的情况

left join 最省时效率更高,in 最效率最低

如果通过上述三种方式,删除多余的数据:

left join

delete a from  cunjk.249_account a left OUTER JOIN bak.249001_account_temp b on a.card_id = b.card_id where b.card_id is null ;

not exits

delete from cunjk.249_account a where   not EXISTS (select * from bak.249001_account_temp b where a.card_id = b.card_id ) ;

in

delete  from cunjk.249_account where card_id not in (select card_id from bak.249001_account_temp ) ;

总结:虽然in 方法写起来很简单,但是性能不够好,left join 外连接,需要关联条件,看起来有一些复杂,但是性能最优。

请适合自己的方法

exits, in, left join性能比较的更多相关文章

  1. SQL Server-聚焦IN VS EXISTS VS JOIN性能分析(十九)

    前言 本节我们开始讲讲这一系列性能比较的终极篇IN VS EXISTS VS JOIN的性能分析,前面系列有人一直在说场景不够,这里我们结合查询索引列.非索引列.查询小表.查询大表来综合分析,简短的内 ...

  2. Go 字符串连接+=与strings.Join性能对比

    Go字符串连接 对于字符串的连接大致有两种方式: 1.通过+号连接 func StrPlus1(a []string) string { var s, sep string for i := 0; i ...

  3. SQL Server-聚焦INNER JOIN AND IN性能分析(十四)

    前言 本节我们来讲讲联接综合知识,我们在大多教程或理论书上都在讲用哪好,哪个性能不如哪个的性能,但是真正讲到问题的实质却不是太多,所以才有了本系列每一篇的篇幅不是太多,但是肯定是我用心去查找许多资料而 ...

  4. PLSQL_性能优化系列02_Oracle Join关联

    2014-09-25 Created By BaoXinjian

  5. Mysql Join语法解析与性能分析详解

    一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditiona table1 ...

  6. 为什么 EXISTS(NOT EXIST) 与 JOIN(LEFT JOIN) 的性能会比 IN(NOT IN) 好

    前言 网络上有大量的资料提及将 IN 改成 JOIN 或者 exist,然后修改完成之后确实变快了,可是为什么会变快呢?IN.EXIST.JOIN 在 MySQL 中的实现逻辑如何理解呢?本文也是比较 ...

  7. (转)MySQL join语法解析与性能分析

    文章转载的:http://www.cnblogs.com/BeginMan/p/3754322.html 一.join语法概述 join用于多表中字段之间的联系,语法如下: ... FROM tabl ...

  8. [转]Mysql Join语法解析与性能分析

    转自:http://www.cnblogs.com/BeginMan/p/3754322.html 一.Join语法概述 join 用于多表中字段之间的联系,语法如下: ... FROM table1 ...

  9. Sort merge join、Nested loops、Hash join(三种连接类型)

    目前为止,典型的连接类型有3种: Sort merge join(SMJ排序-合并连接):首先生产driving table需要的数据,然后对这些数据按照连接操作关联列进行排序:然后生产probed ...

随机推荐

  1. mysql和SQLAlchemy

    mysql和SQLAlchemy 一.MySQL分组查询 1.1 MySQL对数据表进行分组查询(GROUP BY) 1.GROUP BY基本语法格式: GROUP BY关键字可以将查询结果按照某个字 ...

  2. 4.1 SQL的本质

    对于早期的关系数据库,整个行业做了很多努力,试图统一不同的专用查询语言.IBM曾建立了一个早期的标准,被称为Structured English Query Language,这个名字缩写为SEQUE ...

  3. js oop中的三种继承方法

    JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方 ...

  4. 常用js-API

    jquery.base64.js //下面是64个基本的编码 var base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm ...

  5. 在SQLSERVER中如何检测一个字符串中是否包含另一个字符串

    --当charindex返回值大于0时则包含 为0不包含 select CHARINDEX('456','123456')   SQL语句使用CHARINDEX函数,来测试一个字符串中是否包含另一个字 ...

  6. java 将页面指定区域截图并上传到服务器

    controller层: /** * 上传获取到的收据图片 * @param request * @param data 获取到的图片 * @return */ @RequestMapping(val ...

  7. 资源在Windows编程中的应用

    学习目的 掌握菜单和对话框资源的创建和使用. 编写程序: 设计一个窗口应用程序, 其中有一个VC菜单, 该菜单下有"显示", "隐藏", "退出&qu ...

  8. JAVA成员方法的调用分析

    如下面例子: public class A { int x=10; public int getx() {return x;} } public class B extends A { int x=2 ...

  9. git 回退远端提交的三种方法

    git push -f origin XXX(远程分支名) 重新提交一个新的提交.(优先使用这个方式) revert 手动revert 删掉远程分支,再推一个本地分支上去.

  10. bzoj P4825 [Hnoi2017]单旋——solution

    Description H 国是一个热爱写代码的国家,那里的人们很小去学校学习写各种各样的数据结构.伸展树(splay)是一种数据 结构,因为代码好写,功能多,效率高,掌握这种数据结构成为了 H 国的 ...