Postgresql
如何從龐大的 postgres 數據庫中查詢結果?
我正在嘗試查詢 125GB Postgres 數據庫中的幾個表。我發現很難快速恢復結果!
即使要找到一列的唯一行也需要 10 多分鐘。我使用命令行或 PHPMyAdmin 之類的工具來觸發查詢,等待時間保持不變。
例如:
SELECT COUNT (DISTINCT column_name) FROM table_name;
我擔心如果在這些表上使用連接操作,這個等待時間會顯著增加並且會更痛苦。
誰能提出一個可能的解決方案來快速恢復統計數據?
從表名中選擇計數(DISTINCT 列名);
實現“COUNT(DISTINCT…)”的 PostgreSQL 程式碼部分已經很老了,最近還沒有做太多的性能工作。例如,它不能利用並行處理或雜湊表。您可以使用子查詢重寫以可能利用一些更新的技術:
select count(*) from (select distinct column_name from table_name where column_name is not null) as foo
但是,這並不像您想像的那麼簡單。這是一項艱鉅的任務,當輸入大量數據時可能需要很長時間。
我擔心如果在這些表上使用連接操作,這個等待時間會顯著增加並且會更痛苦。
不要發明令人擔心的事情。a 的性能
COUNT(DISTINCT...)
很少告訴你關於 JOIN 的性能。編寫您想要的查詢,然後擔心優化該查詢,而不是與您想要的查詢無關的其他查詢。簡化查詢以查看其組成部分可能需要多長時間是有意義的。但
COUNT(DISTINCT...)
不太可能是這樣一個簡化的組成部分。