翼度科技»论坛 编程开发 mysql 查看内容

系统里这个同时查冷热表的sql,动动手指,从12s降到3s

5

主题

5

帖子

15

积分

新手上路

Rank: 1

积分
15
 系统将交易数据按交易时间分为热表(最近3个月)和冷表(3个月前)。为保证用户体验,当企业门户端查询跨越冷热表时,尤其针对大客户,查询性能优化至关重要。以下是程序的SQL查询语句及其优化版本。
 
系统里的交易数据按交易时间做了冷热表分离(热表仅存储最近3个月的交易数据,3个月前的交易数据自动结转至冷表),我们内部运营系统的交易查询功能进行了冷热数据分开查询。
然后企业客户端呢,为了不影响用户体验,企业门户端的交易查询功能,当选择的查询时间段同时涉及到冷热表时,需要union(合并)两表进行数据查询。这时,尤其是针对那些交易量比较大的客户来说,在查询性能上我们就要做一些努力。
上sql

[code]select  count(*) as orderNum,  IFNULL(sum(amount), 0) as totalAmt,  SUM(CASE WHEN order_status = 'SUCCESS' THEN amount ELSE 0 END) as totalSuccessAmt,  SUM(CASE WHEN order_status = 'FAIL' THEN amount ELSE 0 END) as totalFailAmtfrom  (    select      *    from      order_detail    WHERE      enterprise_id = 1655100723787649      and create_time >= '2024-02-04 00:00:00'      and create_time = '2024-02-04 00:00:00'      and create_time = '2024-02-04 00:00:00'  and create_time = '2024-02-04 00:00:00'  and create_time

举报 回复 使用道具