关联查询和子查询性能比较

在项目开发的过程中,对于一些实体类,它的大部分字段都可以在一张表中查询到,但另一些属性来来自于其它表,需要用到关联查询或者子查询。下面来探讨一下这两种查询的区别。

例如评论表,它的点赞数来自另一张表

public class Comments {
    private Integer commentsId;

    private Integer userId;

    private String comments;

    private Timestamp commentsTime;
    
    //点赞数
    private int agreeCnt;

要查询所有评论,并为每个评论类的点赞数赋值。

子查询

​ List list = sql(xxx)

​ for(c:list) sql(x); c.setAgreeCnt(xxx);

​ 虽然这种方法在框架中的自动代码书写很方便,但是在循环中写sql,性能怎么样呢。。。

看下面分析吧。

关联查询

select * from commets a left join zan on a.commentsId = b.commentsId

这种写法只需一条sql就可以把所需要的数据查询出来,麻烦的是框架中需要在xml中写sql,把点赞数注入到对象属性中。

性能分析 关键!

对于同一个页面的打开时间,用关联查询和子查询的方法对比!!

关联查询:约0.5s

子查询: 2~3秒

所以当性能需要较高时,不要贪方便在循环里写sql,多使用关联查询

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值