原sql爲:
SELECT
SUM(money)
FROM
wallet
WHERE
user_id IN (SELECT DISTINCT
user_id
FROM
user_recharge
WHERE
group_id = '6789' AND is_del= 0)
AND type = 1
AND state IN (0 , 1)
AND createtime BETWEEN '2017-12-12 00:11:22' AND '2019-05-02 00:11:22';
其執行時間爲:5.13s
修改後爲:
select sum(bb.money) from
(SELECT DISTINCT
user_id
FROM
user_recharge
WHERE
group_id = '6789' AND is_del= 0) aa inner join wallet bb on aa.user_id= bb.user_id
AND type= 1
AND state IN (0 , 1)
AND createtime BETWEEN '2017-12-12 00:11:22' AND '2019-05-02 00:11:22';
其執行時間爲:0.131s
原因:通過explain查看了之前的執行計劃得知,是由於in語句中有子查詢導致的,執行計劃中看到了有用到全表掃描;故將SQL進行了修改,效率大大提升了許多!