mysql关联查询优化

线上数据发现一条数据大量等待的现象,通过explain发现这个sql写法存在问题,这里简单记录一下.

业务场景是这样:

存在购物车和费用两张表,购物车数据是购买商品时生成,用于记录购买商品数据,同时购买的商品也会生成费用表,用于统计商品总的支出情况(相当于订单),购物车和费用的关系是多对一,通过gg_gwc.fyxh=gg_fei.id关联.这里需要更新满足条件的购物车关联的fei的数据.

  • 原始查询方式:

因为是测试环境,实际的执行时间并不长,但是gg_fei表发现虽然使用了id索引,但是查询条件却是全表查询,因为in条件中使用子查询会造成索引失效;

  • 优化尝试方式
  • 方式1:

这种方式实际的结果显示是失败的,因为它没有从根本上改变in(子查询)这种方式,它的想法是减少子查询的数据,来加速sql访问,单纯从这条sql来看,实际确实也有点作用,他将子查询8条限制为2条;但是第一条sql因为条件已经很精确,它实际的查询只有一条;

  • 方式2:

  • 方式3:

猜你喜欢

转载自www.cnblogs.com/chengmuyu/p/11499083.html