当前位置:网站首页>子查询和关联查询的区别
子查询和关联查询的区别
2022-08-03 09:08:00 【51CTO】
子查询就是查询中又嵌套的查询,表连接都可以用子查询,但不是所有子查询都能用表连接替换,子查询比较灵活,方便,形式多样,适合用于作为查询的筛选条件,而表连接更适合与查看多表的数据。
子查询不一定需要两个表有关联字段,而连接查询必须有字段关联(所谓的主外键关系)
1,表关联的效率要高于子查询,因为子查询走的是笛卡尔积
2,表关联可能有多条记录,子查询只有一条记录,如果需要唯一的列,最好走子查询
对于数据量多的肯定是用连接查询快些,原因:因为子查询会多次遍历所有的数据(视你的子查询的层次而定),而连接查询只会遍历一次。
但是数据量少的话也就无所谓是连接查询还是子查询,视自己的习惯而定。一般情况下还是用子查询来的好,容易控制。
执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,这里多了一个创建和销毁临时表的过程。
优化方式:
可以使用连接查询(JOIN)代替子查询,连接查询不需要建立临时表,因此其速度比子查询快。
子查询和关联查询的效率问题
MSDN对子查询的定义是这样的:
可以将一个查询的结果用作另一个查询的输入。可以将子查询的结果用作使用 IN( ) 函数、EXISTS 运算符或 FROM 子句的语句。
版权声明:本文为博主原创文章,未经博主允许不得转载。
MYSQL
边栏推荐
猜你喜欢
随机推荐
When deleting a folder, the error "Error ox80070091: The directory is not empty" is reported. How to solve it?
HCIP实验(06)
LINGO 18.0 software installation package download and installation tutorial
pytorch one-hot 小技巧
WPS EXCEL 筛选指定长度的文本 内容 字符串
STP生成树选举结果查看及验证
分析型数据库性能测试总结
chrome F12 network 保留之前请求信息
gpnmb+ gpnmb-AT2 cell idling mapping Epithelial cell idling mapping
线程介绍与使用
MySQL数据库————数据库与vs的连接
window的供选数据流
箭头函数与普通函数的区别
【字节面试】word2vector输出多少个类别
HCIP练习02(OSPF)
英文语法-状语从句
Path Prefixes (倍增!树上の二分)
IDEA的database使用教程(使用mysql数据库)
scala 并行集合、并行并发、线程安全问题、ThreadLocal
【TPC-DS】25张表的详细介绍,SQL的查询特征