2009-08-26 8 views
1

puisque SELECT INTO NEW_TABLE FROM QUERY crée NEW_TABLE la nouvelle table n'aura aucun index. Est-il possible d'utiliser SELECT INTO avec une table existante dans laquelle j'ai créé les index souhaités? Je suis conscient de INSERT INTO TABLE SELECT ... mais j'ai rencontré de très mauvaises performances par rapport à SELECT INTO.PostgreSQL: SELECT INTO - comment créer des index?

Merci

+0

L'affichage d'un titre tout en majuscules ne vous répond obtenir plus vite - plutôt l'inverse. –

+0

c'est probablement vrai - désolé pour cela – Max

Répondre

0

Je ne sais pas quelles questions les performances vous parlez, mais en général, si vous faites une copie de la table, il est beaucoup mieux pour créer des index après l'insertion de données.

I.e. - vous faites:

create table new_table as select * from old_table; 

Ensuite, il suffit de créer des index.

Une option pour simplifier la création d'index est d'utiliser pg_dump et ses options -s et -t, avec quelques « grep »:

pg_dump -s -t old_table database_name | \ 
    grep -E '^CREATE.*INDEX' | \ 
    sed 's/old_table/new_table/g' 
Questions connexes