mysql 关联查询是否很耗性能
发布网友
发布时间:2022-04-30 07:32
我来回答
共2个回答
热心网友
时间:2022-04-08 11:57
1、除非迫不得已,不建议使用子查询,因为在几乎所有的sql语言中子查询都是效率很低的,并且mysql中的子查询在某些旧版本下面还有不少缺陷。
2、直接连接查询,使用的是笛卡尔积的查询模式。就是把X表中的每一行分别与Y表中的每一行组合一次,10W数据表X与30W数据表Y的笛卡尔积将会产生300W条数据。
3、X,Y直连、join、left join、right join、inner jion都属于直接连接查询,只不过在查询出的结果集中的数据选取方式有区别而已(有的时候也会因为这个区别而产生微量的效率不同)。
4、在你上面的两条语句中,只能用语句1。因为语句1使用了直连,笛卡尔积导致的300W的数据量的主键对等查询的速度上还是说得过去的。而语句2中使用了两个子查询,然后以两个子查询的结果集再做笛卡尔积,然后再在300W数据中做主键对等匹配出结果集,且查询出的结果只能是两个表各自的id,不是你想要的结果,并且你的on语句是错误的,会导致不可预知的结果。
热心网友
时间:2022-04-08 13:15
1、除非迫不得已,不建议使用子查询,因为在几乎所有的sql语言中子查询都是效率很低的,并且mysql中的子查询在某些旧版本下面还有不少缺陷。
2、直接连接查询,使用的是笛卡尔积的查询模式。就是把X表中的每一行分别与Y表中的每一行组合一次,10W数据表X与30W数据表Y的笛卡尔积将会产生300W条数据。
3、X,Y直连、join、left join、right join、inner jion都属于直接连接查询,只不过在查询出的结果集中的数据选取方式有区别而已(有的时候也会因为这个区别而产生微量的效率不同)。
请采纳