數據庫有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 起保時間
特記之!