当前位置:网站首页>关于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
边栏推荐
猜你喜欢

Vim实用技巧_1.vim解决问题的方式

蓝桥杯嵌入式备赛

Stetman的读paper小记:Deep Learning Backdoor Survey (Shaofeng Li, Shiqing Ma, Minhui Xue)

The experience of using Photoshop CS6

Vim practical skills_3. Visual mode and command mode

配置 vscode 让它变得更好用

堆(heap)系列_0x08:NT堆调试支持_立刻发现调试支持(DPH)

Vim实用技巧_4.管理多个文件(打开 + 切分 + 保存 + netrw)

PE格式系列_0x05:输出表和重定位表(.reloc)

使用NATS及其nats.c客户端简单示例用法(nats.c的API接口)
随机推荐
【力扣】11. 盛最多水的容器
Visual Studio 2019新手使用(安装并创建第一个程序详细教程)
灰色关联分析
软件安全基本概念
类定义中class和className中间的修饰词的作用有关问题
DOS命令
【工具使用】Keil5软件使用-基础使用篇
模糊综合评价
gccg++基本命令简介
Face recognition sample code analysis (2) - face recognition analysis
#define DEBUG(format, ...) 以及 #、##、__VA_ARGS__和##__VA_ARGS__的作用
【The sword refers to Offer II 091. Paint the house】
MNIST数据集的训练(内附完整代码及其注释)
深入浅出最优化(7) 罚函数法
Excel绘制统计图
深入浅出最优化(4) 拟牛顿法
【力扣】662. 二叉树最大宽度
R-CNN Fast R-CNN Faster R-CNN总结
机器学习的基本术语
VGG pytorch实现