由于SELECT INTO NEW_TABLE FROM QUERY创建NEW_TABLE,新表将没有任何索引。有没有办法利用SELECT INTO和现有的表格来创建所需的索引?我知道INSERT INTO TABLE SELECT ...但是与SELECT INTO相比,我遇到了非常糟糕的性能。
由于
答案 0 :(得分:0)
不确定您会谈到哪些性能问题,但通常情况下,如果您正在复制表格,那么在插入数据后创建索引会更好 。
即。 - 你这样做:
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'