看到一篇文章是讲sql语句or与union all的执行效率比较的,以前没怎么注意这个问题,感觉文章写的不错,转来一看。

文章原链接:http://www.cunyoulu.com/zhuanti/qtstudy/20081124orunion.htm

sql语句or与union all的执行效率比较

当SQL语句有多个or语句时,可以考虑使用union或者union all代替来提高速度。使用or的SQL语句往往无法进行优化,导致速度变慢。但这不是固定的,有时候使用or速度会更快些。具体情况还要经过测试为准。如果加索引的话,也可能实现速度优化。

实验表格如下,实际数据有2,000,000条,从里面返回大约最多1000行左右的数据。

X Y Inline CDP T
12002400 5801000 300 300 3400
12002408 5801005 300 301 3402
12002416 5801010 300 302 3404
12002424 5801015 300 303 3406
... ... ... ... ...

or语句(部分节选)

SELECT * FROM tablename where (cdp= 300 and inline=301) or (cdp= 301 and inline=301) or (cdp= 302 and inline=301) or (cdp= 303 and inline=301) or (cdp= 304 and inline=301) or (cdp= 305 and inline=301) or (cdp= 306 and inline=301) or (cdp= 307 and inline=301)

union all语句(部分节选)

SELECT * FROM tablename where (inline= 300 and cdp=300) union all SELECT * FROM tablename where (inline= 301 and cdp=300) union all SELECT * FROM tablename where (inline= 302 and cdp=300) union all SELECT * FROM tablename where (inline= 303 and cdp=300)

返回不规则的900条数据,前者用了60多秒,后者用了8秒左右。

sql语句or与union all的执行效率比较相关推荐

  1. 一条SQL语句在MySQL中是如何执行的

    来源:http://t.cn/E6U9Z9T 概览 本篇文章会分析下一个sql语句在mysql中的执行流程,包括sql的查询在mysql内部会怎么流转,sql语句的更新是怎么完成的. 一.mysql架 ...

  2. django mysql sql语句_Django笔记:连接数据库并执行SQL语句

    Django中安装好数据库和对应的数据库驱动之后,就可以直接执行SQL语句进行数据库和表的创建,以及数据的增删改查等操作,在Python3中,可以使用的数据库和驱动有多种,我这里使用的是MySQL数据 ...

  3. SQL语句在数据库中是如何执行的

    第一步:应用程序把查询SQL语句发给服务器端执行 我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理. 第二步:服务器解析请求的SQL语句 SQL计划缓存, ...

  4. linux之SQL语句简明教程---UNION ALL

    UNION ALL 这个指令的目的也是要将两个 SQL 语句的结果合并在一起. UNION ALL 和UNION 不同之处在于 UNION ALL 会将每一笔符合条件的资料都列出来,不管资料值有无反复 ...

  5. oracle 执行带参数的sql语句_当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现?...

    当用EXECUTE IMMEDIATE执行SQL语句中的参数个数也是动态的?用什么方法实现? 描述详细一点就是:在要执行的SQL语句中所用到(: parameter)这种参数的个数,因具体条件不同,而 ...

  6. SQL允许你用EXECUTE执行一个变量中定义的SQL语句,并且允许你在被执行的SQL语句中,再次嵌套入一个变量定义的语句,并且再次在其中用EXECUTE执行它...

    declare @sqlstr varchar(3000) set @sqlstr='declare @subsqlstr varchar(1000);' set @sqlstr=@sqlstr+'s ...

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

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

  8. oracle同时运行多行sql语句,.NET程序连接Oracle一次执行多行SQL的注意事项

    以前写的基于MSSQL数据库的.NET程序,不用担心SQL语句中的;或者换行符.但是因为要基于Infor LN的Oracle数据库进行开发,就碰到了;分号和换行的报错,同时一次执行UPDATE的多条更 ...

  9. SQL语句中的AND和OR执行顺序问题

    问题的关键就在于AND和OR的执行顺序问题. 查阅资料,关系型运算符优先级高到低为:NOT>AND>OR 如果where 后面有OR条件的话,则OR自动会把左右的查询条件分开 hive 中 ...

最新文章

  1. maven 错误处理
  2. MyBatis3 xml映射文件配置
  3. 点击事件为什么会失效_1917年的法蒂玛事件,为什么会被称为最为惊悚的UFO目击事件?...
  4. 牛顿法、梯度下降法、高斯牛顿法、Levenberg-Marquardt算法
  5. 聊聊AspectCore动态代理中的拦截器(一)
  6. 解决Oracle 11gR2 空闲连接过多,导致连接数满的问题
  7. 关于OAuth2.0的文章收集
  8. 【CCCC】L3-009 长城 (30分),计算几何+凸包,极角排序
  9. iOS开发技巧:使用Objective-C创建UUID
  10. 趣说cpu指令集之别
  11. linux卸载jdk,安装jdk
  12. 计算机四级网络工程师——计算机网络部分题目笔记
  13. APP原生开发与APP混合开发的区别
  14. EINT DINT ERTM DRTM EALLOW EDIS ESTOP0的理解
  15. 记录一次自己搭建服务器的历程(机架式服务器,Linux系统)
  16. 你有被代理过吗?讲讲开源框架都在用的代理模式
  17. 西南交大计算机应用基础 第2次作业 主观题目,西南交大网络教育2011-2012学年计算机应用基础第四次作业(主观题)...
  18. 2018秋季学习总结
  19. 使用BasicExcel操作Excel
  20. CodeForces 757 E.Bash Plays with Functions(积性函数+dp)

热门文章

  1. OpenGL延迟着色之二
  2. C++fibonacci斐波那契数列,自下而上(附完整源码)
  3. 有序数组中查找数字的范围
  4. C++的const比C语言#define更好的原因?
  5. 经典C语言程序100例之六
  6. C++不同文件中相同变量的共享
  7. centos7 tomcat_CentOS7下Tomcat应用容器抛出Too many open files问题
  8. fillstyle属性_html设置或返回用于填充绘画的颜色渐变或模式的属性fillStyle
  9. 4、Python运算符、比较运算符、赋值运算符、位运算符、逻辑运算符、成员运算符、身份运算符、运算符优先级(学些笔记)
  10. Akka编写一个RPC框架,模拟多个Worker连接Master的情况的案例