首页 > sql group by order by sum语句的优化问题

sql group by order by sum语句的优化问题

SELECT `uid`,
COUNT(`uid`) AS `count`,
SUM(`money`) AS `total`
FROM `Record`
WHERE
`uid` in(1,2,3,4,5)
AND `time` > '2015-11-01 00:00' AND `time` < '2015-11-23 00:00' 
GROUP BY `uid`
ORDER BY `total` DESC
LIMIT 0,30

有办法优化吗

從邏輯上來看這條語句已經沒有優化的空間了, 實現查詢一個人的總金額確實需要這麼查,
在語法上來說, time 區間可以嘗試使用 between, 另 如果 uid 確定是連續的話也可以嘗試用 between 而不用 in, 但如果並不連續而且不固定就只能使用 in 了.
在有, 從你給出的字段來看 表結構應該是 uid, money, time, 這張表應該是一直做 insert 記錄的, 主鍵可以設置爲 id, time 這樣對查詢時的效率會有所提升

【热门文章】
【热门文章】