码迷,mamicode.com
首页 > 数据库 > 详细

SQL查询中的in与join效率比较

时间:2016-02-16 23:28:14      阅读:344      评论:0      收藏:0      [点我收藏+]

标签:

大多数情况下,程序员比较喜欢使用in来查询符合某些条件的数据,最近在查询某个角色有哪些用户的方法中,使用了in语句:

SELECT COUNT(1)
FROM baseuser
WHERE BaseUser.DeletionStateCode = 0
    AND BaseUser.Enabled = 1
    AND BaseUser.IsVisible = 1
    AND BaseUser.Id > 0
    AND BaseUser.Id IN (SELECT UserId
        FROM spysxtUserRole
        WHERE RoleId = 6d989d918dfe428c95e4469f866b1299
            AND Enabled = 1
            AND DeletionStateCode = 0)

技术分享

可以看到时间是0.249ms;

一位朋友看到后,建议改为Join,该在后的语句:

select count(1) from  baseuser A  left join
(SELECT UserId   
FROM spysxtUserRole 
WHERE RoleId = 6d989d918dfe428c95e4469f866b1299 
AND Enabled = 1  
AND DeletionStateCode = 0) B on A.Id = B.UserId
where B.UserId is not NULL and A.DeletionStateCode = 0  AND A.Enabled = 1 
AND A.IsVisible = 1  AND A.Id > 0

技术分享

耗时0.125ms,是用in查询的一半;

查询出的结果都是一样的。

技术分享

 

可以看出,使用join要比用in写的复杂一些,但是效率确实提高跟多。建议能使用join的尽量改一下。

SQL查询中的in与join效率比较

标签:

原文地址:http://www.cnblogs.com/hnsongbiao/p/5194028.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!