美文网首页mysql
or和union区别

or和union区别

作者: 念䋛 | 来源:发表于2021-08-06 10:07 被阅读0次

原文链接:https://blog.csdn.net/lisainan66/article/details/106040944/
access2010查询中SQL数据操纵中写union,联合查询,将多个查询结果合并起来时,系统会自动去掉重复元组,做操作的时候感觉和or语句做出来的结果一样,就在想这两个有什么区别呢,所以上网查了查,真的有写它们之间的关系。

SQL 中 or 和union的区别:
UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:
select * from users1 union select * from user2
这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序。
or是把符合两个条件的都查询出来取并集,不会去掉相同的记录。
select * from user1 where q = '1' or q='2'
就是把q = '1'和 q='2 的所有结果都返回,不去重的。

总结一下就是union会删除重复的记录,or不会去掉重复的记录,二者都是对结果集的合并。

另外一篇文章中提到where子句中使用or会引起全表扫描,一般的用union来代替or。事实证明,这种说法对于大部分都是适用的
看来,用union在通常情况下比用or的效率要高的多。但是如果or两边的查询列是一样的话,那么用union反倒和用or的执行速度差很多,虽然这里union扫描的是索引,而or扫描的是全表。

后来又思考了一下or和in的区别,or 是或者 两个条件满足一个就可以。in 用在于包含 (一段语句或者几个值 ),还有说in是把父查询源表和子查询表作hash连接。or是对父查询表作loop循环,每次loop循环再对子查询表进行查询。

相关文章

  • SQL知识点

    0. SQL基础 inner join和left join的区别 union和union all的区别 union...

  • SQL union和union all操作符

    一、union和union all区别 union会去重,union all不会去重 二、SQL union操作符...

  • 字节飞书后端一面凉经

    1.mybatis中#{}和¥{}区别2.union和union all区别3.redis分布锁4.Integer...

  • or和union区别

    原文链接:https://blog.csdn.net/lisainan66/article/details/106...

  • union与union all

    union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有...

  • SQL面试题,快问快答!

    1. UNION ALL 与 UNION 的区别 UNION和UNION ALL关键字都是将两个结果集合并为一个。...

  • union和union all的区别

    如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字...

  • union和union all 的区别

    使用union关键字时,可以给出多条select 语句,并将它们的结果合成单个结果集。合并时两个表对应的列数和数据...

  • 数据库

    面试题5:union all 和 union的区别 Union:对两个结果集进行并集操作,不包括重复行,同时进行默...

  • union简单测试

    对union有几个小疑问测试了一下结果如下,直接上图和程序 附一篇好文Struct 和 Union区别

网友评论

    本文标题:or和union区别

    本文链接:https://www.haomeiwen.com/subject/fysbvltx.html