欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

提高查询效率

程序员文章站 2022-07-11 17:39:00
...

 

原来的:

 List<Convention> conventions = test2Boy.getConventions();
            for (Convention convention : conventions) {
                //因为在html中\n不会换行,所以要把\n转化为br
                convention.setAnswer(ConventionUtil.convertBr(convention.getAnswer()));
                VoteLog voteLogTmp=this.voteLogDao.get( "user.id", user2.getId(),"convention.id",convention.getId());
                if(null!=voteLogTmp){
                    convention.setHasStar(true);
                }
            }

 conventions 有多少个元素,就得执行多少次sql语句

优化:

 List<Convention> conventions = test2Boy.getConventions();
            int size=conventions.size();
            Object[]objects=new Object[size];
            for (int i=0;i<size;i++){
                Convention convention=conventions.get(i);
                objects[i]=convention.getId();
            }
            List voteLogTmps=this.voteLogDao.getList("user.id", user2.getId(),"convention.id",objects);
            int voteLogSize=voteLogTmps.size();
            for (int j=0;j<voteLogSize;j++){
                VoteLog voteLogTmp=(VoteLog)voteLogTmps.get(j);
                Convention convention=voteLogTmp.getConvention();
                if(null!=convention){
                    convention.setHasStar(true);
                }
            }

 

执行的sql语句为:

/* criteria query */ select
        this_.id as id1_8_2_,
        this_.conventionId as conventi4_8_2_,
        this_.status as status2_8_2_,
        this_.userId as userId5_8_2_,
        this_.vote_time as vote3_8_2_,
        convention2_.id as id1_2_0_,
        convention2_.answer as answer2_2_0_,
        convention2_.pic as pic3_2_0_,
        convention2_.stars as stars4_2_0_,
        convention2_.status as status5_2_0_,
        convention2_.update_time as update6_2_0_,
        user3_.id as id1_7_1_,
        user3_.email as email2_7_1_,
        user3_.level as level3_7_1_,
        user3_.nickname as nickname4_7_1_,
        user3_.password as password5_7_1_,
        user3_.potrait as potrait6_7_1_,
        user3_.username as username7_7_1_ 
    from
        t_vote_log this_ 
    left outer join
        t_convention convention2_ 
            on this_.conventionId=convention2_.id 
    left outer join
        t_user user3_ 
            on this_.userId=user3_.id 
    where
        this_.userId=? 
        and this_.conventionId in (
            ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
        )

 

 

 

 

 

相关标签: 优化查询