Postgresql: более быстрая альтернатива SELECT DISTINCT ON

У меня проблема с копированием отфильтрованных данных из одной таблицы в другую (с похожей структурой). По сути, у меня есть одна большая таблица с примерно 11 миллиардами строк, и я хотел бы скопировать в другую таблицу уникальные записи, основанные на одном из столбцов (называемые "отпечаток пальца"). Я попробовал что-то вроде этого:

INSERT INTO table2 SELECT DISTINCT ON (fingerprint) * FROM table1; 

Обычно это работает, но это медленно; Я проверил это на меньшем столе, состоящем из 800 000 строк, и это заняло почти час. Я попытался изменить INSERT на пару операторов COPY (с бинарной опцией), но это было как-то еще хуже...

Я запускаю сервер psql на Linux LMDE, i5-2410m с 6 гигабайтами оперативной памяти. Я не знаю, если это займет так много времени и есть ли способ улучшить это. Буду признателен за любые советы.

0 ответов

Другие вопросы по тегам