Другая проблема (помимо представлений), которая приходит на ум, - это внешние ключи, если они у вас есть. Они также будут следовать за исходной таблицей при ее переименовании. У функций нет проблемы, поскольку они разрешают имена таблиц при выполнении, а не при создании.
Если вам не нравится воссоздавать представления, вы можете использовать наследование из пустой базы table и укажите на него взгляды. Тогда вы НЕ НАСЛЕДЕТЕ старую и НЕ НАСЛЕДУЙТЕ новую. Лично я считаю, что это лекарство хуже болезни, и просто воссоздаю взгляды. Вы можете получить определения представлений из pg_dump -s
, если они еще не спрятаны в каком-то месте, но вам нужно самостоятельно разобраться, какие из них вам нужны.
Другая проблема может быть связана только с производительностью эта массовая вставка в уже проиндексированную таблицу может быть медленной. Вы можете создать с ВКЛЮЧЕНИЕМ ВСЕ ИСКЛЮЧАЮЩИЕ ИНДЕКСЫ, а затем построить индексы после заполнения. Увы, PostgreSQL не позволяет легко выполнить вторую часть. Нет ничего похожего на гипотетический ALTER TABLE foo2 INCLUDE INDEXES LIKE foo1, который вы можете запустить постфактум (но опять же, pg_dump -s
может помочь здесь, чтобы получить список операторов создания индекса). Но если текущая производительность вас не беспокоит, просто не исключайте индексы в первую очередь, и вам не нужно будет создавать их позже.