select * into newtable和create table newtable AS之间的区别

时间:2015-10-14 10:05:30

标签: performance postgresql

我正在使用拥有900万条记录的大桌子。我正在尝试备份该表。如下。

首次质询

Create table newtable1 as  select * from hugetable  ;

第二次查询

Select * into newtable2  from hugetable  ; 

这里的第一个查询似乎非常快。我想知道它的功能差异和为什么它与第二个查询比较快?哪一个是首选的?

1 个答案:

答案 0 :(得分:4)

Quote from the manual:

  

此命令(create table as)在功能上与SELECT INTO类似,但它更受欢迎,因为它不太可能与SELECT INTO语法的其他用法混淆。此外,CREATE TABLE AS提供了SELECT INTO提供的功能的超集。

所以两者都做同样的事情,但CREATE TABLE AS是SQL标准的一部分(因此也适用于其他DBMS),而SELECT INTO是非标准的。正如手册所述,您应该比非标准语法更喜欢CREATE TABLE AS

性能方面两者都是相同的,您看到的差异可能与系统上的缓存或其他活动有关。