BitZ2 2023-07-28 14:28 采纳率: 50%
浏览 3
已结题

sql多表连接查询查询

select count(*) from (
       SELECT trade_type, txn_tms, pay_type, txn_num, txn_amt, shift_id, DEVICE_NID, cur_station
        FROM AFC_CC_USER.DETAIL_NOD_TRANSACTION_RECORD_NORMAL
        WHERE SUBSTR(DEVICE_NID, 5, 2) = '03'
        UNION ALL
        SELECT trade_type, txn_tms, pay_type, txn_num, txn_amt, shift_id, DEVICE_NID, cur_station
        FROM AFC_CC_USER.DETAIL_NOD_TRANSACTION_RECORD_ADJUST
        WHERE SUBSTR(DEVICE_NID, 5, 2) = '03'
    )a 
    left join tbl_civil_service b on a.shift_id = b.shift_id AND TO_CHAR(a.TXN_TMS, 'YYYY-MM-DD') = TO_CHAR(b.CUR_TMS, 'YYYY-MM-DD')
    WHERE a.txn_tms >= '2023-07-26 00:00:00' AND a.txn_tms <= '2023-07-26 23:00:00'

这段代码有什么问题,大家帮忙看看解答一下,a表26号就101条数据,b表15条,但是left join之后就变几千条了,咋优化

  • 写回答

4条回答 默认 最新

  • 喝茶品人生 2023-07-28 14:49
    关注

    这两张表是不是有相同的字段和数据,不建议使用union all,你可以把前两个表的复合结果放在cte里,并且对相同字段设置非聚簇索引,那么他就走走的是index search 而不是range search

    img

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月29日
  • 创建了问题 7月28日

悬赏问题

  • ¥20 物理远程控制麦克风使用问题
  • ¥15 打印预览会泄漏纸钱包密码吗
  • ¥15 在hololens1上运行unity项目只有空窗口
  • ¥25 TABLEAU PREP无法打开
  • ¥15 百度帐号问题/centos
  • ¥15 关于#c语言#的问题:求完整代码条件好说
  • ¥100 HALCON DELPHI
  • ¥15 (需要远程,AI不回)VB6二进制文件转换成功,但是C#转换总是失败
  • ¥15 关于#matlab#的问题:有没有什么其他办法能够保证不退出进程(相关搜索:matlab调用)
  • ¥15 依据报错在原代吗格式的基础上解决问题