我prices
在 PostgreSQL 10 DB 中有一个时间序列表。
这是一个简化的测试用例来说明问题:
CREATE TABLE prices (
currency text NOT NULL,
side boolean NOT NULL,
price numeric NOT NULL,
ts timestamptz NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
我想快速查询每个currency
/side
双人组的最后一个值,因为这会给我每种货币的当前买入/卖出价格。
我目前的解决方案是:
create index on prices (currency, side, ts desc);
select distinct on (currency, side) *
order by currency, side, ts desc;
Run Code Online (Sandbox Code Playgroud)
但这会让我在这个只有 ~30k 行的表中查询非常慢(~500ms)。
在实际的表都有,我想组四列而不是两个。下面是实际的表和查询的样子:
create table prices (
exchange integer not null,
pair text not null,
side …
Run Code Online (Sandbox Code Playgroud) postgresql performance index-tuning greatest-n-per-group postgresql-10 postgresql-performance
除了这几个表之外,我需要在具有不同目的和模式的数据库之间保持更新几个表。
我当前的解决方案是一个 cron 作业,它每分钟左右从一个数据库中进行选择并插入到另一个数据库中,但我想知道 PostgreSQL 版本 10 是否有更强大的解决方案。