大概 765W 的数据,单表查询,需要频繁的计算某字段的日环比,目前 SQL 计算时间超过 30s,请各位大佬指点迷津;
需求:在总表中查询某个月的日环比
目前方案:
- 1 、直接查,时间超过 30s,pass
- 2 、将计算结果再次落表,查计算结果表,由于筛选条件众多,且落表 SQL 分条件查询结果后落表时间久也影响使用,待定;
目前 SQL:
SELECT
right(t.day,2) AS day,
t.R11 as num,
y.R11 ynum,
CASE
WHEN y.R11 IS NULL
OR y.R11 = 0 THEN
0.00 ELSE round((t.R11/y.R11)-1, 2 )
END cc
FROM
( SELECT day, CONVERT (R11 , DECIMAL) as R11 FROM 原始数据表 ) t
LEFT JOIN
( SELECT REPLACE(date_add( day, INTERVAL 1 DAY ),"-","") tomorrow, CONVERT (R11 , DECIMAL) as R11 FROM 原始数据表 ) y ON t.day = y.tomorrow
where left(t.day,6) = concat(#{year},#{month})
order by t.day
大佬轻喷,不胜感激。