Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.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
Sql 如何让postgres快速搜索_Sql_Postgresql_Bigdata - Fatal编程技术网

Sql 如何让postgres快速搜索

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

我有一个Postgresql数据库,在一个表中有超过1000亿行

表架构如下所示:

 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,不,我可以使用任何数据库。我试过卡桑德拉,但没有为我做这项工作。我确信它能起作用。但是,由于您的问题没有显示您想要加速的查询的详细信息,因此很难帮助您。