我在 postgres 中有一个带有多个索引的大表。它有关于 db_timestamp、id、用户名的索引。
我想找到特定用户名的最大时间戳。 问题是像
这样的简单查询SELECT MAX(db_timestamp) FROM Foo WHERE username = 'foo'
因为表很大(我们说的是 450GB 的表,索引大小超过 30GB),所以要花很多时间。
他们有什么方法可以优化此查询或告诉 postgres 使用什么查询计划吗?
最佳答案
使用正确的排序顺序在用户名和 db_timestamp 上创建索引:
CREATE INDEX idx_foo ON foo (username ASC, db_timestamp DESC);
检查 EXPLAIN 以查看是否一切正常。
关于postgresql - 查找 MAX(db timestamp) 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2970060/