小编iva*_*rec的帖子

如何加快查询时间序列中的最后一个值?

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

6
推荐指数
1
解决办法
1144
查看次数

在 PostgreSQL 10 中只复制几个表

除了这几个表之外,我需要在具有不同目的和模式的数据库之间保持更新几个表。

我当前的解决方案是一个 cron 作业,它每分钟左右从一个数据库中进行选择并插入到另一个数据库中,但我想知道 PostgreSQL 版本 10 是否有更强大的解决方案。

replication postgresql-10

5
推荐指数
1
解决办法
6200
查看次数