数据库有83W条记录,本想计算20180101之后的每天赔付情况,故写了以下SQL语句:
SELECT 起保时间,sum(赔付金额) as 日赔付
FROM maindata
WHERE 起保时间>'20180101'
GROUP BY 起保时间
结果每次执行要7.5S。
对 ‘起保时间’ 建立索引 速度反而加到7.8S。
经过多次测试,改成显式从查询结果GROUP BY ,效率大大提高,大概在1.1S,SQL语句如下:
SELECT 起保时间,sum(赔付金额) as 日赔付
FROM (SELECT 起保时间,赔付金额 FROM maindata WHERE 起保时间>'20180101') t
GROUP BY 起保时间
特记之!