Sql 如何让postgres快速搜索
我有一个Postgresql数据库,在一个表中有超过1000亿行 表架构如下所示:Sql 如何让postgres快速搜索,sql,postgresql,bigdata,Sql,Postgresql,Bigdata,我有一个Postgresql数据库,在一个表中有超过1000亿行 表架构如下所示: id_1 | integer | | not null | id_2 | bigint | | not null | created_at | timestamp without time
id_1 | integer | | not null |
id_2 | bigint | | not null |
created_at | timestamp without time zone | | not null |
id_3 | bigint | | |
char1 | character varying(20) | | not null |
lang | character(6) | | not null |
gps | point | | |
some_dat | character varying(140)[] | | |
JSON | jsonb | | not null |
- 我试图在JSON对象内部搜索并按JSON对象对数据进行排序,但问题是排序和返回数据花费了太多时间
- 例如,当通过在处创建的
对数据进行排序时,结果也需要时间
id\u 1
和id\u 2
另外,我尝试为每个(id
)使用物化视图,但问题是更新物化视图也需要很多时间。
有什么建议吗
我正在运行PostgreSQL 10.3,在一台带有SSD和128 GB ram的Linux服务器上
谢谢,如果要使用以下表达式对查询结果进行排序:
ORDER BY expr1, expr2, ...
您需要以下索引来加速排序:
CREATE INDEX ON atable ((expr1), (expr2), ...);
如果由于表达式包含的函数不是不可变的,因此该方法不起作用,则无法使用索引加快排序速度。在这种情况下,考虑用<代码>不可更改的< /Calp>表达式重写查询。< /p>您的搜索查询中使用的列是什么?可以吗?根据您对json数据执行的查询,在该列上放置gin索引将有所帮助,有关优化查询的更多帮助,请参阅发布特定查询和解释分析这些查询的输出。您为您的硬件优化了postgresql吗?@MacakM是的,任何列。@MohamedSaad如果可以是任何列,索引都不会对您有帮助,因为您必须在任何地方使用它们。您是对其他数据库开放还是必须是PostgreSQL?@MacakM,不,我可以使用任何数据库。我试过卡桑德拉,但没有为我做这项工作。我确信它能起作用。但是,由于您的问题没有显示您想要加速的查询的详细信息,因此很难帮助您。