0
我有一個100 GB大小的postgresql數據庫。其中一個表格有大約五十億條目。爲了快速輸入數據,一些數據被重複,稍後修剪。其中一列可用於將行標識爲唯一。刪除大postgresql數據庫表中的重複行
我發現this stackoverflow question這表明對MySQL的解決方案:
ALTER IGNORE TABLE table_name ADD UNIQUE (location_id, datetime)
有什麼PostgreSQL的相似?
我試着用group和row number刪除,我的電腦在兩種情況下幾個小時後內存耗盡。
這是我所得到的,當我嘗試估算表中的行數:
SELECT reltuples FROM pg_class WHERE relname = 'orders';
reltuples
-------------
4.38543e+08
(1 row)
你可以顯示你的表DDL和你正在執行的刪除語句嗎?如果您將刪除操作變爲選擇計數(*),您的刪除定位有多少行? – Kuberchaun
@JustBob select count(1)在我停止之前花了一個多小時。 – nurettin
我的想法是做批量刪除。我很好奇你的刪除是在2行還是3億後進行的。如果你有一個漂亮的索引列是一個序列,你可以在一組行上進行滑動並從那裏刪除。你將不得不寫一個python腳本或其他東西來循環刪除表中的最小和最大與提交之間的id。做到這一點,直到你到達表格的末尾,最小和最大變化範圍高於最後一個範圍,但仍然只會在說出50,000條記錄之後。合理? – Kuberchaun