Postgresql: более быстрая альтернатива SELECT DISTINCT ON
У меня проблема с копированием отфильтрованных данных из одной таблицы в другую (с похожей структурой). По сути, у меня есть одна большая таблица с примерно 11 миллиардами строк, и я хотел бы скопировать в другую таблицу уникальные записи, основанные на одном из столбцов (называемые "отпечаток пальца"). Я попробовал что-то вроде этого:
INSERT INTO table2 SELECT DISTINCT ON (fingerprint) * FROM table1;
Обычно это работает, но это медленно; Я проверил это на меньшем столе, состоящем из 800 000 строк, и это заняло почти час. Я попытался изменить INSERT на пару операторов COPY (с бинарной опцией), но это было как-то еще хуже...
Я запускаю сервер psql на Linux LMDE, i5-2410m с 6 гигабайтами оперативной памяти. Я не знаю, если это займет так много времени и есть ли способ улучшить это. Буду признателен за любые советы.