按查詢優(yōu)化組以檢索每個用戶的最新行下面是Postgres 9.2中用戶消息的日志表(簡化形式):CREATE TABLE log (
log_date DATE,
user_id INTEGER,
payload INTEGER);它包含每個用戶和每天最多一條記錄。每天大約有500 K記錄,持續(xù)300天。每個用戶的有效載荷都在不斷增加(如果這很重要的話)。我希望在特定日期之前有效地檢索每個用戶的最新記錄。我的問題是:SELECT user_id, max(log_date), max(payload) FROM log
WHERE log_date <= :mydate
GROUP BY user_id非常慢。我也嘗試過:SELECT DISTINCT ON(user_id), log_date, payloadFROM logWHERE log_date <= :mydateORDER BY user_id, log_date DESC;它有著相同的計劃,而且同樣緩慢。到目前為止,我有一個單一的索引log(log_date)但沒有多大幫助。我有一個users包含所有用戶的表。我還想為一些用戶檢索結果(payload > :value).還有其他的索引,我應該使用它來加快速度,或任何其他的方式來實現我想要的嗎?
按查詢優(yōu)化組以檢索每個用戶的最新行
HUWWW
2019-06-06 16:02:52