
双方
IN并
OR会做一个查询
b = 0,接着一个
b = 3,然后做一个合并连接的两个结果集,最后筛选出任何重复。
使用
IN,重复项并没有真正的意义,因为
b不能同时使用
0和
3,但是事实是
IN将重复转换为
b = 0 OR b = 3和
OR,重复项_是_ 有意义的,因为您可以使用
b = 0 OR a = 3,并且如果您要将两个分开结果集,对于与两个条件均匹配的每条记录,最终可能会出现重复项。
因此,无论您使用
IN还是,都将始终执行重复过滤
OR。但是,如果您从一开始就知道没有重复项(通常是在使用时的情况),
IN则可以使用
UNIOnALL不过滤重复项的方法来获得一些性能:
select distinct(a)from mytablewhereb = 0UNIOn ALLselect distinct(a)from mytablewhereb = 3
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)