MySQl:子查询和关联查询哪个效率高

MySQL:子查询 和 关联查询 哪个效率高

t1:订单表
t2:客户表

子查询:
select t1.id,t1.time,(select t2.id from t,t2 where t1.userId = t2.id)as username from t1

关联查询:
select t1.id,t1.time,t2.name where t1.userId = t2.id as username MySQL:子查询 和 关联查询效率 哪个效率高

t1:订单表
id:
time:创建时间
userId:用户id

t2:客户表
id:用户id

子查询:
select t1.id,t1.time,(select t2.id from t,t2 where t1.userId = t2.id)as username from t1

关联查询:
select t1.id,t1.time,t2.name where t1.userId = t2.id as username from t1,t2

子查询就是查询中又嵌套的查询,表连接都可以用子查询,但不是所有子查询都能用表连接替换,子查询比较灵活,方便,形式多样,适合用于作为查询的筛选条件,而表连接更适合与查看多表的数据。子查询不一定需要两个表有关联字段,而连接查询必须有字段关联(所谓的主外键关系)

1)表关联的效率要高于子查询,因为子查询走的是笛卡尔积
2)表关联可能有多条记录,子查询只有一条记录,如果需要唯一的列,最好走子查询对于数据量多的肯定是用连接查询快些
原因:因为子查询会多次遍历所有的数据(视你的子查询的层次而定),而连接查询只会遍历一次。

场景:
数据量:也就无所谓是连接查询还是子查询,视自己的习惯而定。
数据量大:优选使用关联查询from t1,t2

子查询就是查询中又嵌套的查询,表连接都可以用子查询,但不是所有子查询都能用表连接替换,子查询比较灵活,方便,形式多样,适合用于作为查询的筛选条件,而表连接更适合与查看多表的数据。子查询不一定需要两个表有关联字段,而连接查询必须有字段关联(所谓的主外键关系)

1)表关联的效率要高于子查询,因为子查询走的是笛卡尔积
2)表关联可能有多条记录,子查询只有一条记录,如果需要唯一的列,最好走子查询对于数据量多的肯定是用连接查询快些
原因:因为子查询会多次遍历所有的数据(视你的子查询的层次而定),而连接查询只会遍历一次。

场景:
数据量:也就无所谓是连接查询还是子查询,视自己的习惯而定。
数据量大:优选使用关联查询

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值