10.性能优化之指定select字段查询+指定参数分页查询QueryWrapper

51 阅读1分钟

简介: 性能优化之指定select字段查询

  • 面试题:select * 和 select 指定字段的区别

    • 网络IO问题
    select * 会查出所有的字段,有些是不需要的,当应用程序和服务器不在同一个局域网时,
    字段过多会影响网络传输的性能
    
    • 索引问题
    在 指定字段有索引的情况下,mysql是可以不用读data,直接使用index里面的值就返回结果的。
    但是一旦用了select *,就会有其他列需要从磁盘中读取才会返回结果,这样就造成了额外的性能开销
    
  • MybatisPlus指定查询字段

bannerMapper.selectList(new QueryWrapper<BannerDO>().select("id","name"));

指定参数查询

@Test
@DisplayName("banner-MyBatisPlus分页---指定参数查询")
public void test20() throws Exception {
    QueryWrapper<BannerDO> wrapper = new QueryWrapper();
    wrapper.eq("weight", 4);
    //第1页,每页2条
    Page<BannerDO> page = new Page<>(2, 2);
    IPage<BannerDO> bannerDOIPage = bannerMapper.selectPage(page, wrapper.select("id","url"));

    log.info("总条数:{}", bannerDOIPage.getTotal());
    log.info("总页数:{}", bannerDOIPage.getPages());
    //获取当前数据
    log.info("" + bannerDOIPage.getRecords());
}

image.png