2021-01-28
mysql数据库复杂sql优化问题

生产环境有条慢sql需优化,耗时609s,如下:
sum( fsl_unrelease_pack_ob_lines.qty ) AS qty_sum, sum( fsl_unrelease_pack_ob_lines.box_qty ) AS box_qty_sum, sum( fsl_unrelease_pack_ob_lines.release_qty ) AS release_qty_sum, sum( fsl_unrelease_pack_ob_lines.box_qty - fsl_unrelease_pack_ob_lines.release_qty ) AS unrelease_qty_sum, sum( fsl_unrelease_pack_ob_lines.box_qty - fsl_unrelease_pack_ob_lines.release_qty ) AS add_qty_sum, sum( fsl_unrelease_pack_ob_lines.weight ) AS weight_sum, sum( fsl_unrelease_pack_ob_lines.volume ) AS volume_sum FROM fsl_order_base_line AS fsl_unrelease_pack_ob_lines LEFT JOIN fsl_order_base AS ob ON fsl_unrelease_pack_ob_lines.order_base = ob.id WHERE ob.model1 = 'pack' AND ob.project_code = 'DD' AND fsl_unrelease_pack_ob_lines.domain_name IN ( 'FSL' ) AND fsl_unrelease_pack_ob_lines.origin IN ( SELECT location FROM fsl_zone_part t1 JOIN fsl_location t2 ON t1.zone1 = t2.id WHERE t2.NAME = 'xx')
复制
》》 查看执行计划如下:
》》表数据量如下:
》》考虑优化:改写sql+强制索引
这里是考虑小表驱动大表
改写后的sql如下,需强制索引才走对应的执行计划
sum( fsl_unrelease_pack_ob_lines.qty ) AS qty_sum, sum( fsl_unrelease_pack_ob_lines.box_qty ) AS box_qty_sum, sum( fsl_unrelease_pack_ob_lines.release_qty ) AS release_qty_sum, sum( fsl_unrelease_pack_ob_lines.box_qty - fsl_unrelease_pack_ob_lines.release_qty ) AS unrelease_qty_sum, sum( fsl_unrelease_pack_ob_lines.box_qty - fsl_unrelease_pack_ob_lines.release_qty ) AS add_qty_sum, sum( fsl_unrelease_pack_ob_lines.weight ) AS weight_sum, sum( fsl_unrelease_pack_ob_lines.volume ) AS volume_sum FROM fsl_zone_part t1 JOIN fsl_location t2 ON t1.zone1 = t2.id join fsl_order_base_line AS fsl_unrelease_pack_ob_lines force index(index_obl_origin) on fsl_unrelease_pack_ob_lines.origin=t1.location LEFT JOIN fsl_order_base AS ob ON fsl_unrelease_pack_ob_lines.order_base = ob.id WHERE t2.NAME = '华南' AND ob.model1 = 'pack' AND ob.project_code = 'DD' AND fsl_unrelease_pack_ob_lines.domain_name IN ( 'FSL' )
复制
执行计划:
但耗时仍需400s,请问下有进一步优化空间?
我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
回答交流
Markdown
请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
