我是 PG 新手,试图运行这个简单的查询,但它正在使 Postgres 崩溃。如果我只尝试计算 r1,查询会在几秒钟内工作,但如果我尝试计算 r2 到 r6 以及如下所示的 r1,则会显示“内存不足”。查询设计不佳?我将在其他计算中引用计算字段 r1...r6,因此正在考虑将此查询设为视图。我的关键配置文件参数如下。Windows 10,PG 9.6,40GB RAM,64 位。关于做什么的任何想法?谢谢!
编辑:我尝试将 LIMIT 500 添加到末尾并且有效,但是如果我对此查询运行查询,即在另一个查询中使用计算的 r1,r2,r3...,新查询会看到所有记录还是会限制在500以内吗?
SELECT
public.psda.price_y1,
public.psda.price_y2,
public.psda.price_y3,
public.psda.price_y4,
public.psda.price_y5,
public.psda.price_y6,
public.psda.price_y7,
(price_y1 - price_y2) / nullif(price_y2, 0) AS r1,
(price_y2 - price_y3) / nullif(price_y3, 0) AS r2,
(price_y3 - price_y4) / nullif(price_y4, 0) AS r3,
(price_y4 - price_y5) / nullif(price_y5, 0) AS r4,
(price_y5 - price_y6) / nullif(price_y6, 0) AS r5,
(price_y6 - price_y7) / nullif(price_y7, 0) AS r6
FROM
public.psda
我的配置文件参数:
max_connections = 50
shared_buffers = 1GB
effective_cache_size = 20GB
work_mem = 400MB
maintenance_work_mem = 1GB
wal_buffers = 16MB
max_wal_size = 2GB
min_wal_size = 1GB
checkpoint_completion_target = 0.7
default_statistics_target = 100