sql查询:子查询和联表查询有什么区别,效率、性能等有什么差异?

MySql 码拜 9年前 (2015-11-13) 4833次浏览
例如:SELECT score,(SELECT userName FROM app_student WHERE app_score.user_id = app_student.app_user_id) userName FROM app_score

SELECT app_score.score,app_student.userName FROM app_score LEFT JOIN app_student ON app_score.user_id = app_student.app_user_id
谢谢!
解决方案:10分
1,表关联的效率要高于子查询,原因是子查询走的是笛卡尔积
2,表关联可能有多条记录,子查询只有一条记录,假如需要唯一的列,最好走子查询
解决方案:20分
一般来说子查询和关联子表的性能,相对来说 关联表要好一些。
为什么呢?
主要在于优化器更加倾向于去优化 关联查询,且关联查询相对来说更易理解,语句也相对简单,所以优化效果比较好,能生成较优的执行计划。
但是,这个也不确定,性能能否好,还是要看优化器生成的执行计划,假如子查询生成的执行计划更好,那么就会更快。
解决方案:20分
第一种尽量不要写。
select 字段里有子查询,一个字段还好,多个字段都这样的话,外表一次查询,子查询要两次,关联的话就只需要一次就好。
还有一种子查询,就是条件里面用in的,in后面的查询假如没有索引,会需要全表查询。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明sql查询:子查询和联表查询有什么区别,效率、性能等有什么差异?
喜欢 (0)
[1034331897@qq.com]
分享 (0)