2009-08-26 3 views
1

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

Благодаря

+0

Проводка титул все в шапках не получат вам ответы быстрее - скорее наоборот. – 2009-08-26 08:58:43

+0

это, наверное, правда - извините за это – Max

ответ

0

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

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

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'