mysql 表关联之后索引失效的原因排查

1、两表关联使用的条件字段中字段的长度是否是一致的

2、两表关联使用的条件字段中字段的编码是否是一致的

3,根本本就没用到关联表中的字段去查询

今天我发现的问题就是第三个,

客户信息36万,中间表62万,关联了却没用到中间表的城市id去查导致没有用到索引,直接导致查询崩溃

优化之后我的分页查询是这样的

if("2".equals(customer.getSourceType())
    &&customer.getHoHouseCustomer()!=null
    &&StringUtils.isNotBlank(customer.getHoHouseCustomer().getHoCityCode())){
          customer.setPage(page);
          page.setList(dao.findFastHoList(customer));
            //用到ho的城市查询条件则关联查ho的中间关系表
          return page;
 }else{
         customer.setPage(page);
            //否则就不关联查询
         page.setList(dao.findFastList(customer));
         return page;
  }

 就是你关联我就要用我,不用我还要惹我就会给你点颜色看看

你可能感兴趣的:(mysql数据库)