当前位置:网站首页>子查询和关联查询的区别
子查询和关联查询的区别
2022-08-03 09:08:00 【51CTO】
子查询就是查询中又嵌套的查询,表连接都可以用子查询,但不是所有子查询都能用表连接替换,子查询比较灵活,方便,形式多样,适合用于作为查询的筛选条件,而表连接更适合与查看多表的数据。
子查询不一定需要两个表有关联字段,而连接查询必须有字段关联(所谓的主外键关系)
1,表关联的效率要高于子查询,因为子查询走的是笛卡尔积
2,表关联可能有多条记录,子查询只有一条记录,如果需要唯一的列,最好走子查询
对于数据量多的肯定是用连接查询快些,原因:因为子查询会多次遍历所有的数据(视你的子查询的层次而定),而连接查询只会遍历一次。
但是数据量少的话也就无所谓是连接查询还是子查询,视自己的习惯而定。一般情况下还是用子查询来的好,容易控制。
执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。
优化方式:
可以使用连接查询(JOIN)代替子查询,连接查询不需要建立临时表,因此其速度比子查询快。
子查询和关联查询的效率问题
MSDN对子查询的定义是这样的:
可以将一个查询的结果用作另一个查询的输入。可以将子查询的结果用作使用 IN( ) 函数、EXISTS 运算符或 FROM 子句的语句。
版权声明:本文为博主原创文章,未经博主允许不得转载。
MYSQL
边栏推荐
- 【LeetCode】101. Symmetric Binary Tree
- Redis cluster concept and construction
- LINGO 18.0 software installation package download and installation tutorial
- 【LeetCode】101.对称二叉树
- 牛客 - 鼠标的天选(字符串哈希)
- 箭头函数与普通函数的区别
- 手把手教你如何自制目标检测框架(从理论到实现)
- Automated test browser driver download version
- C# 一周入门高级编程之《C#-继承》Day One
- LeetCode 每日一题——622. 设计循环队列
猜你喜欢
redis键值出现 xacxedx00x05tx00&的解决方法
LINGO 18.0软件安装包下载及安装教程
【LeetCode】226.翻转二叉树
手把手教你如何自制目标检测框架(从理论到实现)
机器学习(公式推导与代码实现)--sklearn机器学习库
多媒体数据处理实验2:PCA
MySQL-TCL语言-transaction control language事务控制语言
【LeetCode】112. Path sum
STP生成树选举结果查看及验证
STP普通生成树安全特性— bpduguard特性 + bpdufilter特性 + guard root 特性 III loopguard技术( 详解+配置)
随机推荐
【微信小程序】底部有安全距离,适配iphone X等机型的解决方案
Batch PNG format can be converted to JPG format
Machine learning (formula derivation and code implementation)--sklearn machine learning library
【LeetCode】101.对称二叉树
固件工程师到底是干什么?
STP生成树选举结果查看及验证
深度学习之 10 卷积神经网络1
flush tables
【LeetCode】622. Design Circular Queue
redis stream 实现消息队列
Flink Yarn Per Job - 创建启动Dispatcher RM JobManager
"Easy to use" websites that others don't know, make you more efficient
HCIA实验(07)
浅析什么是伪类和伪元素?伪类和伪元素的区别解析
Gauva的ListenableFuture
dflow入门2——Slices
响应式布局经典范例——巨幅背景大标题
【TPC-DS】DF的SQL(Data Maintenance部分)
10 Convolutional Neural Networks for Deep Learning 2
scala 并行集合、并行并发、线程安全问题、ThreadLocal