百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> mysql中not in,not exists与join的is null效率对比
分享文章到:

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

发布时间:01/15 来源: 浏览: 关键词:
以前我刚学php时就问我一朋友mysql中not in,not exists与join的is null这几个函数他们的性能怎么样,那样更好一些,下面我来作一个简单的测试。

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

 代码如下

select a.id from a left join b ON a.id=b.aid where b.aid is NULL;
select a.id from a where a.id not in (select b.aid from b);
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就出来结果了,索引与没索引会有这样强烈的差异,所以对于这种查询,一定要对关联字段建立索引哦,要不你就只有接受龟迅了!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有7人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板