现在有条sql,由于数据量过大,程序中执行过慢需要优化,有没有sql大神帮忙啊? 下面是sql脚本。
答案:1 悬赏:80 手机版
解决时间 2021-12-02 05:05
- 提问者网友:我是女神我骄傲
- 2021-12-01 22:07
现在有条sql,由于数据量过大,程序中执行过慢需要优化,有没有sql大神帮忙啊? 下面是sql脚本。
最佳答案
- 五星知识达人网友:拜訪者
- 2021-12-01 23:05
1.(SELECt COUNT(*) FROM t_activate_expand e WHERe e.activate_code = a. CODE) total
这个是想得到t_activate_expand表的总记录数,
2.(SELECt COUNT(*)FROM t_activate_expand e LEFT JOIN t_ticket_recode r ON e.code_data = r.code_data WHERe e.activate_code = a. CODE AND r.state = 3 ) couponNum 这个用的左连接,couponNum和total的值是相等的吧,你是不是逻辑写错了?
3.select a.* FROM t_activate_code a where a.shop_id = 'c574d803-0ea0-4849-b4d8-030ea01849b7' AND a.type = 1 这个句是条件查询t_activate_code表
你要在一句里面查询的话时间过长,你可以分3次查询,他们单个查询应该很快,不过我怎么看你这语句写得这么别扭追问首先你说的1和2不是相等的 连接都不是同一个表 逻辑是对的 不过这个sql可能确实有点太乱 所以需要优化啊 我需要一起查出来到一个列表中 分开查不能实现把?追答怎么不能分开查了,你是在dao层查询,然后返回结果到前端展示的吧.
如果你定义一个Map retMap对象作为返回对象,
先查1,得到total放到retMap里面定义key为total,值为你查询得到的值
同理2也一样。
对于3查询得到是一个list,你可以定义一个key为data,直接把list放里面
最终这个map里面有3个对象,至于前台怎么用就是你逻辑问题了。
这个是想得到t_activate_expand表的总记录数,
2.(SELECt COUNT(*)FROM t_activate_expand e LEFT JOIN t_ticket_recode r ON e.code_data = r.code_data WHERe e.activate_code = a. CODE AND r.state = 3 ) couponNum 这个用的左连接,couponNum和total的值是相等的吧,你是不是逻辑写错了?
3.select a.* FROM t_activate_code a where a.shop_id = 'c574d803-0ea0-4849-b4d8-030ea01849b7' AND a.type = 1 这个句是条件查询t_activate_code表
你要在一句里面查询的话时间过长,你可以分3次查询,他们单个查询应该很快,不过我怎么看你这语句写得这么别扭追问首先你说的1和2不是相等的 连接都不是同一个表 逻辑是对的 不过这个sql可能确实有点太乱 所以需要优化啊 我需要一起查出来到一个列表中 分开查不能实现把?追答怎么不能分开查了,你是在dao层查询,然后返回结果到前端展示的吧.
如果你定义一个Map
先查1,得到total放到retMap里面定义key为total,值为你查询得到的值
同理2也一样。
对于3查询得到是一个list,你可以定义一个key为data,直接把list放里面
最终这个map里面有3个对象,至于前台怎么用就是你逻辑问题了。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯