mysql中not in,not exists与join的is null效率对比
发布:smiling 来源: PHP粉丝网 添加日期:2014-10-04 11:19:09 浏览: 评论:0
以前我刚学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);
- --phpfensi.com
- 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就出来结果了,索引与没索引会有这样强烈的差异,所以对于这种查询,一定要对关联字段建立索引,要不你就只有接受龟迅了.
Tags: mysql效率 exists效率对比
相关文章
- ·MySQL Order By Rand()效率分析(2014-10-08)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)