私はPGが初めてで、この単純なクエリを実行しようとしていますが、Postgresがクラッシュしています. r1のみを計算しようとするとクエリは数秒で機能しますが、以下のようにr1に加えてr2からr6を計算しようとすると「メモリ不足」と表示されます。クエリの設計が悪い?計算フィールド r1...r6 を他の計算で参照するので、このクエリをビューにしようと考えていました。主な構成ファイルのパラメーターは以下のとおりです。Windows 10、PG 9.6、40 GB 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