164得票10回答
仅在内存中运行PostgreSQL

我想运行一个仅在内存中运行的小型PostgreSQL数据库,用于我编写的每个单元测试。例如:@Before void setUp() { String port = runPostgresOnRandomPort(); connectTo("postgres://localho...

96得票8回答
按照ID删除数百万行的最佳方法

我需要从我的PG数据库中删除约200万行数据。我有一个需要删除的ID列表。然而,无论我尝试什么方法都需要花费数天的时间。 我尝试将它们放进一个表中,并分批次进行操作,每批次100个。但是四天后,仅成功删除了297268行。(我必须从一个ID表中选择100个ID,将这些ID传递给一个DELET...

86得票3回答
优化GROUP BY查询以检索每个用户的最新行

我在Postgres 9.2中有以下用户消息的日志表(简化形式):CREATE TABLE log ( log_date DATE, user_id INTEGER, payload INTEGER ); 每个用户每天最多包含一条记录。每天大约会有500k条记录,持...

53得票1回答
使用PostgreSQL快速查找相似字符串

我需要在表格中创建相似字符串的排名。 我有以下表格:create table names ( name character varying(255) ); 目前,我正在使用pg_trgm模块,该模块提供了similarity函数,但是我遇到了效率问题。我按照Postgres手册建议创建了一个...

50得票4回答
Postgres查询优化(强制使用索引扫描)

以下是我的查询。我尝试使用索引扫描,但它只会顺序扫描。 顺便说一下,metric_data表有1.3亿行。metrics表大约有2000行。 metric_data表列: metric_id integer , t timestamp , d double precision , P...

48得票2回答
如何理解 EXPLAIN ANALYZE

我对查看EXPLAIN ANALYZE结果并不是很熟悉,我的查询速度非常慢。我尝试阅读如何解释查询结果的文章,但仍不知道应该寻找什么以及可能出了什么问题。我感觉肯定有什么大红灯在闪,只是我没有看到。 因此,查询很简单,它长这样: EXPLAIN ANALYZE SELECT "cars"....

44得票6回答
如何加快在PostgreSQL表中计算行数的速度?

我们需要计算PostgreSQL表中的行数。在我们的情况下,不需要满足任何条件,并且如果能显著提高查询速度,获得行估计值也可以完全接受。 基本上,我们希望select count(id) from <table>尽可能快地运行,即使这意味着不能获得精确结果。

40得票2回答
Postgres没有使用索引,尽管索引扫描是更好的选项。

我有一个简单的查询,需要连接两个表格,但速度非常慢。我发现查询计划在大表格email_activities上进行了顺序扫描(约10M行),而我认为使用索引执行嵌套循环会更快。 我尝试使用子查询重写查询以强制使用索引,然后发现了一些有趣的事情。如果您查看下面的两个查询计划,您会发现当我将子查询...

36得票3回答
使用数据类型"text"存储字符串有什么缺点吗?

根据PostgreSQL文档,他们支持3种字符数据类型:character varying(n), varchar(n) variable-length with limit character(n), char(n) fixed-length, blank padd...

33得票4回答
优化查询速度:在大型PostgreSQL表中进行简单SELECT操作

我在Postgres数据库的SELECT查询速度方面遇到了一些问题。 我的表格有两个整数列作为关键字:(int1,int2) 这个表格大约有7000万行数据。 我需要在这个环境中进行两种简单的SELECT查询:SELECT * FROM table WHERE int1=X; SELECT *...