PostgreSQL: SELECT INTO - как создавать индексы? - PullRequest
1 голос
/ 26 августа 2009

поскольку SELECT INTO NEW_TABLE FROM QUERY создает NEW_TABLE, новая таблица не будет иметь никаких индексов. Есть ли способ использовать SELECT INTO с существующей таблицей, где я создал желаемые индексы? Мне известно о INSERT INTO TABLE SELECT ... но я столкнулся с очень плохой производительностью по сравнению с SELECT INTO.

Спасибо

1 Ответ

0 голосов
/ 26 августа 2009

Не знаю, о каких проблемах с производительностью вы говорите, но обычно, если вы делаете копию таблицы, намного лучше создавать индексы после вставки данных.

т.е. - вы делаете:

create table new_table as select * from old_table;

Тогда просто создайте индексы.

Одним из вариантов, упрощающих создание индекса, является использование параметров pg_dump и его параметров -s и -t с некоторыми "grep":

pg_dump -s -t old_table database_name | \
    grep -E '^CREATE.*INDEX' | \
    sed 's/old_table/new_table/g'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...