我正在尝试查询 125GB Postgres 数据库中的几个表。我发现很难快速恢复结果!
即使要找到一列的唯一行也需要 10 多分钟。我使用命令行或 PHPMyAdmin 之类的工具来触发查询,等待时间保持不变。
例如:
SELECT COUNT (DISTINCT column_name) FROM table_name;
我担心如果在这些表上使用连接操作,这个等待时间会显着增加并且会更痛苦。
谁能提出一个可能的解决方案来快速恢复统计数据?
我正在尝试查询 125GB Postgres 数据库中的几个表。我发现很难快速恢复结果!
即使要找到一列的唯一行也需要 10 多分钟。我使用命令行或 PHPMyAdmin 之类的工具来触发查询,等待时间保持不变。
例如:
SELECT COUNT (DISTINCT column_name) FROM table_name;
我担心如果在这些表上使用连接操作,这个等待时间会显着增加并且会更痛苦。
谁能提出一个可能的解决方案来快速恢复统计数据?
实现 "COUNT(DISTINCT...)" 的 PostgreSQL 代码部分已经很老了,最近还没有做太多的性能工作。例如,它不能利用并行处理或哈希表。您可以使用子查询重写以可能利用一些更新的技术:
但是,这并不像您想象的那么简单。这是一项艰巨的任务,当输入大量数据时可能需要很长时间。
不要发明令人担心的事情。a 的性能
COUNT(DISTINCT...)
很少告诉你关于 JOIN 的性能。编写您想要的查询,然后担心优化该查询,而不是与您想要的查询无关的其他查询。简化查询以查看它的组成部分可能需要多长时间是有意义的。但
COUNT(DISTINCT...)
不太可能是这样一个简化的组成部分。