用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > mysql教程

mysql中not in,not exists与join的is null效率对比

时间:2015-01-23  来源:西部数据  作者:西部数据

以前我刚学php时就问我一朋友mysql中not in,not exists与join的is null这几个函数他们的性能怎么样,那样更好一些,下面我来作一个简单的测试.

从a表查询出关联字段在b表中不出现的所有记录,现在两数据表有数据大概都约为2万5千条记录,b表相对a表少了230条记录,所以要查询a表多出来的记录,关联字段是a表的id与b表aid,查询方法分别用常见的三种方法,代码如下:

  1. select a.id from a left join b ON a.id=b.aid where b.aid is NULL
  2.  
  3. select a.id from a where a.id not in (select b.aid from b); 
  4.  --phpfensi.com
  5. select a.id from a where not exists (select null from b where b.aid=a.id); 

用join的is null方法结果:230 rows in set(39 min 0.48 sec)

not in方法结果:230 rows in set (38 min 7.48 sec)

not exists方法结果:230 rows in set (37 min 52.44 sec)

晕了,为什么都是这样慢呢?哪里出错了?

原来b表的aid没建索引,建立索引后再查询就快了很多很多,索引后再查询三种方法大概都只用了0.52sec就出来结果了,索引与没索引会有这样强烈的差异,所以对于这种查询,一定要对关联字段建立索引,要不你就只有接受龟迅了.

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门