大概 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 大佬轻喷,不胜感激。
