Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL中高效查询和分页财务数据的索引_Postgresql_Postgresql 9.2 - Fatal编程技术网

PostgreSQL中高效查询和分页财务数据的索引

PostgreSQL中高效查询和分页财务数据的索引,postgresql,postgresql-9.2,Postgresql,Postgresql 9.2,我使用的API需要返回金融交易列表。这些记录保存在6个不同的表中,但都有3个公共字段: transaction_id int NOT NULL, account_id bigint NOT NULL, created timestamptz NOT NULL 注意:实际上可能有 在postgresql中,表在继承中得到了很好的使用,但并没有这样做 业务要求是返回1个列表中给定帐户id的所有交易,该列表按创建的降序排序(类似于网上银行页面,您的最后一笔交易位于顶部)。最初,他们希望以50条记

我使用的API需要返回金融交易列表。这些记录保存在6个不同的表中,但都有3个公共字段:

transaction_id int NOT NULL, 
account_id bigint NOT NULL, 
created timestamptz NOT NULL
注意:实际上可能有 在postgresql中,表在继承中得到了很好的使用,但并没有这样做

业务要求是返回1个列表中给定帐户id的所有交易,该列表按创建的
降序排序(类似于网上银行页面,您的最后一笔交易位于顶部)。最初,他们希望以50条记录为一组进行分页,但我让他们在日期范围内进行分页(相信我可以在数据库中比使用偏移量和限制更有效)

我的目的是在每个表上创建一个索引,如下所示:

CREATE INDEX idx_table_1_account_created ON table_1(account_id, created desc);
ALTER TABLE table_1 CLUSTER ON idx_table_1_account_created;
然后,最后创建一个视图,将6个表中的所有记录合并到一个列表中,然后显然需要*重新引用6个表中的记录以生成一个统一的列表(按正确的顺序)。此调用如下所示:

SELECT * FROM vw_all_transactions 
WHERE account_id = 12345678901234 
AND created >= '2014-01-01' AND created < '2014-02-01'
ORDER BY created desc;
从vw\u所有交易中选择*
其中账户id=1234567890134
创建>='2014-01-01'并创建<'2014-02-01'
订单由创建描述;
我的问题与创建索引和聚类方案有关。由于记录必须由视图重新调用,是否有任何理由将单个索引指定为created desc?并且在定期调用
CLUSTER;

我在谷歌上做了一些搜索和阅读,但似乎找不到任何信息来回答集群将如何工作


在Heroku上使用PostgreSQL 9.2。

日期范围分页的性能可能比
limit
offset
要好,但
其中id>$last\u seen\u id ORDER BY id limit 50
也可以执行。顺便说一句,您可以在事后添加继承(是的,这很奇怪)请参阅<代码>更改表…继承< /COD>。我会考虑这样做。对于其余的细节,我个人会做虚拟数据并测试它。好的建议。谢谢!