问题
我正在尝试在 postgres 数据库中的 SQL 视图上运行以下查询:
SELECT sum(value) FROM invoices_view;
大约有invoices_view4500 万行,整个数据库的数据大小为 40.5 GB,数据库有 61 GB RAM。
目前这个查询需要 4.5 秒,我希望它最好低于 1 秒。
我尝试过的事情
当然,我不能直接向 SQL 视图添加索引,但可以在基础表上有一个索引:
CREATE INDEX invoices_on_value_idx ON invoices (value);
我还在VACUUM ANALYZE发票表上运行了一个。
解释分析
的输出EXPLAIN ANALYZE如下:
EXPLAIN (ANALYZE, BUFFERS) SELECT sum(value) FROM invoices_view;
Finalize Aggregate (cost=1514195.47..1514195.47 rows=1 width=32) (actual time=5102.805..5102.806 rows=1 loops=1)
Buffers: shared hit=14996 read=1446679
I/O Timings: read=3235.147
-> Gather (cost=1514195.16..1514195.47 rows=3 width=32) (actual time=5102.716..5109.229 rows=4 loops=1)
Workers Planned: 3
Workers Launched: …Run Code Online (Sandbox Code Playgroud)