数据库:
user表字段 id name deptId;
一、用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分钟,方式二虽然写着麻烦但是效率高,可以用多线程的方式进行查询,即使不用也就几秒钟,上百万的数据量更能体现优势,数据量小的话是看不出差别的,外包经常会先用方式一去做,然后客户觉得效率低,那就花钱升级配置,其实只需要改写成方式二。
江湖套路深,别光想着回农村,多学习,多分享!