首页 > 其他 > 详细

多表联查2种思路

时间:2021-07-30 15:49:28      阅读:17      评论:0      收藏:0      [点我收藏+]

数据库:

user表字段 id name deptId;

dept表字段 id name

 

一、用left join的方式写sql

 select * from user u left join dept d on u.deptId = d.id

# 这里的*是为了省事,最好是写成需要的字段名,好处是可以起别名,提升效率,另外可以避免如果两种表里都有name这个字段的情况下,数据传输出现问题,亲身体验过!

二、分两次查询,在java里处理逻辑

 List<User> lus = userMapper.selectList(null);
 List<Dept> lds = deptMapper.selectList(null);
 for (User user : lus){
     for (Dept dept : lds){
         if (dept.id==user.getDeptId){
             user.setDeptName = dept.getName;
        }
    }
 }
 ?

总结: 推荐使用第二种,因为第一种比较消耗系统资源,联查的表越多效率越低,比如15-20张表,20万的数据量,方式一的时间大概要5-10分钟,方式二虽然写着麻烦但是效率高,可以用多线程的方式进行查询,即使不用也就几秒钟,上百万的数据量更能体现优势,数据量小的话是看不出差别的,外包经常会先用方式一去做,然后客户觉得效率低,那就花钱升级配置,其实只需要改写成方式二。

江湖套路深,别光想着回农村,多学习,多分享!

 

多表联查2种思路

原文:https://www.cnblogs.com/hippo-dolphin/p/15078298.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!