Mysql中Union和OR性能对比
博客已搬家,更多内容查看https://liangyongrui.github.io/
Mysql中Union和OR性能对比
在leetcode上看到一篇文章,整理一下
参考:https://leetcode.com/problems/big-countries/discuss/103561/Union-and-OR-and-the-Explanation
有两种SQL,结果是一样的,但是第二种快一点:
#用OR
SELECT name, population, area
FROM World
WHERE area > 3000000 OR population > 25000000
#用Union
SELECT name, population, area
FROM World
WHERE area > 3000000
UNION
SELECT name, population, area
FROM World
WHERE population > 25000000
为什么Union比OR更快呢?
严格的讲,用Union更快仅限于扫描两个不同的列
(当然,UNION ALL 比 UNION 更快)MySQL 通常是使用一个索引来扫描表的,如果有两个索引的时候,第二个索引就要再扫一边
如果时用UNION就是两次都扫一个索引。
(我觉得第一个时间复杂度时O(logn*logn), 第二个是O(logn * 2), 忽略常数时间复杂度不变benchmark 关于 UNION 和 OR, 有下表
Scenario 3: Selecting all columns for different fields
CPU Reads Duration Row Counts OR 47 1278 443 1228 UNION 31 1334 400 1228 Scenario 4: Selecting Clustered index columns for different fields
CPU Reads Duration Row Counts OR 0 319 366 1228 UNION 0 50 193 1228
总结:
- 从benchmark的表上来看不加索引的话几乎没区别, 甚至用OR的读性能更好。
- 我觉得在性能不是特别敏感的时候,还是用or比较好。因为代码简介,可读性高。反之用Union
Mysql中Union和OR性能对比的更多相关文章
- MySQL中union和order by一起使用的方法
MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明.首先看下面的t1表. 1.如果直接用如下sql语句是会报错:Incorrect usage ...
- MySQL中UNION和UNION ALL的使用
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后 ...
- Python开发【笔记】:从海量文件的目录中获取文件名--方法性能对比
Python获取文件名的方法性能对比 前言:平常在python中从文件夹中获取文件名的简单方法 os.system('ll /data/') 但是当文件夹中含有巨量文件时,这种方式完全是行不通 ...
- mysql中UNION ALL用法
MYSQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果. 举例说明: select * from table1 u ...
- mysql中 union是什么鬼
在sql注意时,经常会用到一个不怎么常用的联合查询 http://www.php20.com/forum.php?m ... &extra=page%3D1 清空表.从新执行一下以上链接中的s ...
- Mego(1) - NET中主流ORM框架性能对比
从刚刚开始接触ORM到现在已有超过八年时间,用过了不少ORM框架也了解了不少ORM框架,看过N种关于ORM框架的相关资料与评论,各种言论让人很难选择.在ORM的众多问题中最突出的问题是关于性能方面的问 ...
- ffmpeg中的sws_scale算法性能对比
sws_scale的算法有如下这些选择. #define SWS_FAST_BILINEAR 1#define SWS_BILINEAR 2#define SWS_BICUBIC 4#define S ...
- MySQL和OneSQL并行插入性能对比
按照我的作风,没图说个啥 环境 下面是受叶金荣老师的启发把相关环境交代清楚 MySQL和OneSQL的关键参数配置如下 数据库 sync_binlog innodb_flush_log_at_trx_ ...
- mysql中union与union all的区别
当查询表结构完全相同的多张表的数据时: 1.当查询条件完全相同且不包括主键,此时用union查询会过滤掉查询出的重复的记录,及漏查记录:使用union all进行查询,则会查出所有的符合条件的记录,保 ...
随机推荐
- Markdown编辑器说明
标题: Markdown编辑器说明 作者: 梦幻之心星 347369787@QQ.com 标签: [Markdown, 编辑器] 目录: [软件] 日期: 2020-6-4 前提说明 在使用Markd ...
- Python 字符串、列表和元组用法详解
1.通用函数 len() #列表的元素个数.字符串的长度 2.''' '''与'\ '用法详解 s='''this is a text ''' -->输出s ---> 'this\nis\ ...
- 诸葛亮vs司马懿,排序算法大战谁能笑到最后?
阵前对峙 公元234年,蜀汉丞相诸葛孔明再次北伐. 一日,与司马仲达所率魏军两军相峙,二人阵前舌战. 司马曰:"诸葛村夫,吾与汝相斗数年,斗兵斗阵斗谋略,均已疲乏.今日,何不一改陈规,斗点新 ...
- Windows下搭建Apache网站
目录 Apache下载 Apache安装 httpd.conf文件格式说明 启动服务并测试 Apache下载 在Apache官网底部找到APACHE PROJECT LIST里的HTTP Server ...
- render props的运用
2020-04-03 render props的运用 术语 “render prop” 是指一种在 React 组件之间使用一个值为函数的 prop 共享代码的简单技术 通常的 这个值为函数的prop ...
- CenterOS7 修改 SSH 端口
首先修改 /etc/ssh/sshd_config 文件中的 Port.修改前一定要备份 可以同时启用多个Port所以最好先追加一个端口,新端口校验没问题之后再把原端口删除 防火墙设置 # 永久开放端 ...
- @Results用法总结
MyBatis中使用@Results注解来映射查询结果集到实体类属性. (1)@Results的基本用法.当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来.col ...
- Android使用OkHttp实现登录注册功能
客户端 在客户端,这里将登录和注册放在了同一个界面,在账号和密码两个EditText中输入内容后,按下LOGIN按钮,进行登录:按下REGISTER按钮,进行注册. 在写代码之前,先添加OkHttp的 ...
- JS遍历对象的几种方法
几天前一个小伙伴问我 Object.getOwnPropertyNames() 是干什么用的 平时还真没有使用到这个方法,一时不知如何回答 从方法名称来分析,应该是返回的是对象自身属性名组成的数组 那 ...
- PHP丨PHP基础知识之条件语SWITCH判断「理论篇」
Switch在一些计算机语言中是保留字,其作用大多情况下是进行判断选择.以PHP来说,switch(开关语句)常和case break default一起使用 典型结构 switch($control ...