Я пытаюсь создать новую таблицу как UNION
из всех строк двух существующих таблиц с одинаковыми столбцами:
CREATE TABLE table3 AS
(SELECT * from table1
UNION
SELECT * from table2);
Через некоторое время я получаю «Соединение с сервером» был потерян. " Запуск EXPLAIN
, операция имеет довольно высокую стоимость:
Unique (cost=51951688.65..57110689.45 rows=257950040 width=36)
-> Sort (cost=51951688.65..52596563.75 rows=257950040 width=36)
Sort Key: table1.id, table1.stid, table1.e5, table1.e10, table1.diesel, table1.date, table1.changed
-> Append (cost=0.00..8859500.00 rows=257950040 width=36)
-> Seq Scan on gas_prices (cost=0.00..1282341.56 rows=66285256 width=36)
-> Seq Scan on gas_prices_1620 (cost=0.00..3707907.84 rows=191664784 width=36)
JIT:
Functions: 1
Options: Inlining true, Optimization true, Expressions true, Deforming true
Так что сортировка требует много ресурсов. Я установил параметры памяти в postgresql .conf выше, чем по умолчанию, но я работаю только в системе с 16 ГБ памяти. Я подозреваю, что реиндексация существующих таблиц может помочь, однако я не уверен, какой индекс сделать. Ни в одной из таблиц нет закрытого ключа: ни один, ни комбинация столбцов не являются уникальными (за исключением всех столбцов одновременно).
Как заставить запрос работать? Спасибо за вашу помощь.