首先给出结论:SQL语句中使用UNION ALL取代OR不一定能够提升效率,具体情况要视情况而定

情况1. 连接字段较少,存在非索引字段,条件简单情况下

 使用OR,进行一次全表扫描,不走cust_order_id的索引,执行时长:3273

使用UNION ALL,先走cust_order_id的索引,再进行全表扫描,反而用时更高.执行时长:3287

情况2: 连接字段较多,都是索引字段,条件简单情况下

使用OR,都走索引,耗时52

使用union all,都走索引,耗时43

结论:

union all 并不一定就比 or及in 快,要结合实际情况分析到底使用哪种情况。

对于索引列来最好使用union all,因复杂的查询【包含运算等】将使or、in放弃索引而全表扫描,除非你能确定or、in会使用索引

对于只有非索引字段来说你就老老实实的用or 或者in,因为 非索引字段本来要全表扫描而union all 只成倍增加表扫描的次数

对于既有索引字段【索引字段有效】又包含非索引字段来时,按理你也使用or 、in或者union all 都可以,推荐使用or、in。

以上主要针对的是单表,而多表联合查询来说,考虑的地方就比较多了,比如连接方式,查询表数据量分布、索引等,再结合单表的策略选择合适的关键字

SQL中使用UNION ALL一定比OR效率高吗?相关推荐

  1. SQL中EXISTS与IN的使用及效率

    in 和exists 对于以上两种查询条件,in是把外表和内表作hash 连接,而exists 是对外表作loop 循环,每次loop 循环再对内表进行查询. 一直以来认为exists 比in 效率高 ...

  2. Sql中的union和union all的讲解

    SQL UNION 和 UNION ALL操作符 UNION 操作符用于合并两个或多个 SELECT 语句的结果集. 请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列.列也必须拥有相 ...

  3. sql中 in , not in , exists , not exists效率分析

    in和exists执行时,in是先执行子查询中的查询,然后再执行主查询.而exists查询它是先执行主查询,即外层表的查询,然后再执行子查询. exists 和 in 在执行时效率单从执行时间来说差不 ...

  4. SQL Server中的Union和Union All语句之间的差异及其性能

    SQL Server中的Union和Union All语句之间的差异及其性能 UNION vs UNION ALL 了解union和union all语句之间的差异及其性能. UNION UNION命 ...

  5. SQL中 UNION 和 UNION ALL 操作符小结

    SQL中 UNION 和 UNION ALL 操作符小结1.UNION 和 UNION ALL 操作符用于合并两个或多个 SELECT 语句的结果集[适用场景] 2.UNION 和 UNION ALL ...

  6. 【SQL注入】 sql注入中的union和limt关键字的使用解析

    [SQL注入] sql注入中的union和limt关键字的使用解析 我将用测试靶场做演示,拿下网站数据库来向你展示sql注入全过程和思路 一.首先要找到注入点 [http://rhiq8003.ia. ...

  7. SQL语句中:UNION与UNION ALL的区别

    UNION用的比较多union all是直接连接,取到得是所有值,记录可能有重复 union 是取唯一值,记录没有重复 1.UNION 的语法如下:[SQL 语句 1]UNION[SQL 语句 2]2 ...

  8. SQL中的case when then else end用法

    2019独角兽企业重金招聘Python工程师标准>>> Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sexWHEN '1' THEN ...

  9. SQL中使用WITH AS提高性能-使用公用表表达式(CTE)简化嵌套SQL

    一.WITH AS的含义     WITH AS短语,也叫做子查询部分(subquery factoring),可以让你做很多事情,定义一个SQL片断,该SQL片断会被整个SQL语句所用到.有的时候, ...

  10. fastreport.net 交叉表居中显示_浅析Sql中内连接、外连接、全连接、交叉连接的区别...

    外连接(out join) 外连接分为外左连接(left outer join)和外右连接(right outer join) 注释:left outer join 与 left join 等价, 一 ...

最新文章

  1. Java 18 要来了,你不会还在用Java 8吧?
  2. 基础知识——测试代码(七)
  3. 又是找 Bug 的一天! | 每日趣闻
  4. 黄聪:NaviCat通过Http方式连接服务器的MySQL数据库(转)
  5. 跳槽季,TurboMail邮件系统支招防员工邮件泄密
  6. 7.类的访问控制和继承
  7. mt7601u linux驱动下载,Ubuntu16.04安装DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
  8. 通用测试用例大全(转自——知了.Test)
  9. 电子版,材料获取说明
  10. Mac OS Git 安装
  11. Atom与markdown
  12. [Spring5]AOP底层原理
  13. linux 编译安装python,linux下编译安装python2.7.6
  14. 前端学习(2525):实现过滤功能
  15. java配合ajax加快发展_配合JAVA的AJAX使用
  16. N个数依次入栈,出栈顺序有多少种?
  17. python sklearn 梯度下降法_科学网—Python_机器学习_总结4:随机梯度下降算法 - 李军的博文...
  18. ioc,di,aop详解
  19. AMD: Developer Guides, Manuals ISA Documents
  20. 关于【apache- tomcat- 5.5.15/conf /Catalina/localhost配置虚拟目录】时的一些问题。(配置web项目的方式不止一种,虚拟目录就是一个)

热门文章

  1. 守望先锋-生涯数据信息抓取的实现
  2. 守望先锋四服务器修改,服务器刷新率提高 《守望先锋》终于不用死在墙角了...
  3. java华氏摄氏转换练习
  4. 时间管理---重要紧急四象限法
  5. cpu空载50度,大热天,cpu都上50度了! -
  6. 如何对文件进行压缩和解压缩
  7. 十位博客专家极力推荐的 谷歌浏览器插件,用过都说好
  8. office无法卸载无法安装的解决方法
  9. 【智能安防监控补光灯调光芯片方案】单节锂电降压恒流驱动芯片FP8013 最大输出3A体积小/静态功耗低/效率高/支持无频闪调光
  10. vue项目导入excel数据