SQL优化实例:大表驱动小表修改为小表驱动大表

原SQL,主表有130万数据,JOIN一个16条数据的查询结果,索引完整,执行需要6秒

SELECT
    spo.partner_order_id,
    t1.parent_trade_id,
    t1.trade_id,
    t1.operator
FROM
    st_pay_order spo
        JOIN (
    SELECT
        otr.trade_id,
        otr.parent_trade_id,
        otr.operator
    FROM
        st_biz_account_flow af
        JOIN st_order_trade_relation otr ON af.linked_trade_id = otr.trade_id
    WHERE
        af.update_time >= '2023-09-15 16:00:01'
        AND af.update_time < '2023-09-15 16:05:01'
        AND af.dr = 0
    AND af.biz_account_type = 'CISTERN'
    ) t1 ON spo.store_order_id = t1.parent_trade_id
    where spo.`status` = 'S'

修改为查询结果(小表)JOIN130万数据的大表,执行只需要20毫秒,优化成功!

SELECT
    spo.partner_order_id,
    t1.parent_trade_id,
    t1.trade_id,
    t1.operator FROM  (
    SELECT
        otr.trade_id,
        otr.parent_trade_id,
        otr.operator
    FROM
        st_biz_account_flow af
        JOIN st_order_trade_relation otr ON af.linked_trade_id = otr.trade_id
    WHERE
        af.update_time >= '2023-09-15 16:00:01'
        AND af.update_time < '2023-09-15 16:05:01'
        AND af.dr = 0
    AND af.biz_account_type = 'CISTERN'
    ) t1 JOIN st_pay_order spo
       
    ON spo.store_order_id = t1.parent_trade_id
    AND  spo.`status` = 'S'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值