当前位置:网站首页>关于sql语句中union和or的区别
关于sql语句中union和or的区别
2022-08-09 14:59:00 【why_so_hot】
先看两者定义:
union
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
即我们在查询的时候需要保证查询的字段,字段类型同时顺序都需要保持一致。
or
or用于连接两个条件,只要满足其中一个就输出一条记录
区别
- 光从定义上其实就能看出,union是可以连接两个以上的SELECT语句的,即可在不同的表内进行查询,or的对象则是一张表内
- union会对结果进行排序去重,而or不会,or会直接把最后的结果拿出来取并集(大部分情况下其实两者结果都一致)
- 这点是最大区别,对于每张表,每次查询只会用一个索引,例如下面这条判断:where age > 25 or money > 100,如果该表选择了age作为索引,那么在判断money > 100时就只能进行全表扫描,选择money时同理。但是union可以连接两个查询,每个查询可以用不同的索引,因此可以避开这个问题。
总结
union虽然可以避免一些问题,但是因为涉及到排序去重,所以效率也会下降一下,但一般数据量较大时union都是要优于or的,可以根据实际业务情况来进行选择。但如果or两边的查询条件是同一个字段时就可以直接选择or,毕竟省去了union的排序去重。如where age > 25 or age is NULL
边栏推荐
- 灰色关联度矩阵——MATLAB在数学建模中的应用
- 【力扣】207. 课程表
- 【力扣】516. 最长回文子序列
- 【知识分享】知识链路-Modbus通信知识链路
- 【原理+源码详细解读】从Transformer到ViT
- Monte Carlo simulation
- hugging face tutorial - Chinese translation - sharing custom model
- Hold face (hugging face) tutorial - Chinese translation - create a custom framework
- 【力扣】1995. 统计特殊四元组
- The experience of using Photoshop CS6
猜你喜欢
随机推荐
深入浅出最优化(6) 最小二乘问题的特殊方法
解决pyqt5 DLL load failed: 找不到指定的程序的问题
类定义中class和className中间的修饰词的作用有关问题
交叉编译 CURL
堆(heap)系列_0x04:堆的内部结构(_HEAP=_HEAP_SEGMENT+_HEAP_ENTRY)
Vim实用技巧_5.在文件间和文件内快速移动
数据拟合方法 MATLAB在数学建模中的应用(第二版)
Postgraduate Work Weekly (Week 6)
CRM定制开发需要多少钱 CRM系统定制开发价格
【力扣】593. 有效的正方形
hugging face tutorial-Chinese translation-pipeline-based reasoning
蓝桥杯嵌入式备赛
Correlation analysis
【工具使用】Modbus Poll软件使用详解
Stetman读peper小记:Defense-Resistant Backdoor Attacks Against DeepNeural Networks in Outsourced Cloud
层次分析法(AHP)——MATLAB在数学建模中的应用(第2版)
QNX 7.1 交叉编译 boost 1.76
PE format series _0x05: output table and relocation table (.reloc)
灰色关联分析
灰色关联度矩阵——MATLAB在数学建模中的应用






![[Deep learning] attention mechanism](/img/ef/108e6117546dc7fa4b634cd45c3fad.jpg)


