巨大的 PostgreSQL table - Select,更新很慢

Huge PostgreSQL table - Select, update very slow

我正在使用 PostgreSQL 9.5。我有一个 table 差不多是 20GB 的。它在 ID 列上有一个主键,它是一个自动递增列,但是我 运行 我在另一列上的查询是一个时间戳...我正在尝试 select/update/delete 基于时间戳列,但查询非常慢。例如:A select on this table `where timestamp_column::date (current_date - INTERVAL '10 DAY'::date) 需要超过 15 分钟左右.. 您能否帮助我应该向此 table 添加哪种索引(如果需要)以使其执行得更快?

谢谢

您可以使用子句表达式创建索引:

CREATE INDEX ns_event_last_updated_idx ON ns_event (CAST(last_updated AT TIME ZONE 'UTC' AS DATE));

但是,请记住,您正在使用 timestamp with timezone,将此类型强制转换为 date 可能会让您产生不良的副作用。

此外,删除 sql 中的所有转换:

select * from ns_event where Last_Updated < (current_date - INTERVAL '25 DAY');