为了将数据从一个高效的表复制到另一个表,使用 INTO 还是使用 INSERT? [复制]

Posted

技术标签:

【中文标题】为了将数据从一个高效的表复制到另一个表,使用 INTO 还是使用 INSERT? [复制]【英文标题】:For copying data from one to another table which is efficient,using INTO or using INSERT? [duplicate] 【发布时间】:2013-09-16 06:09:54 【问题描述】:

有两种方法可以将数据从一个表复制到另一个表。

1. First create a new table then using "

INSERT INTO TABLE2_NAME 
SELECT * FROM TABEL1_NAME"

2. SELECT * INTO TABLE2_NAME FROM TABLE1_NAME

我使用的是 SQL Server 2012。

【问题讨论】:

【参考方案1】:

它们是不同的,因为第一个需要已经创建表,第二个也将创建表。

我敢打赌,读取 TABLE1_NAME 的执行计划将是相同的,因此第二个可能会慢几毫秒,因为它必须创建表。

接下来要考虑的是创建表的位置。在第一个中,您可能已将表放在快速存储上,而在第二个中,它将转到可能会或可能不会优化的默认主存储。

如果所有条件都相同 - 那么它可能是不值得考虑的微优化。

【讨论】:

【参考方案2】:

INSERT INTO TABLE2_NAME SELECT * FROM TABEL1_NAME 创建 TABLE2_NAME 并将 TABEL1_NAME 的值插入其中。它更有效,但如果表已经创建,则该语句会出错。

SELECT * INTO TABLE2_NAME FROM TABLE1_NAME 只在 TABEL2_NAME 中插入 TABLE1_NAME 的值。

【讨论】:

以上是关于为了将数据从一个高效的表复制到另一个表,使用 INTO 还是使用 INSERT? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将一个数据库中的一个表复制到另一个数据库中去

SqlServer将数据库中的表复制到另一个数据库

SqlServer将数据库中的表复制到另一个数据库

SqlServer将数据库中的表复制到另一个数据库

将具有 LONG RAW 列的表中的数据从一个数据库复制到另一个数据库

将 HIVE 中的表从一个数据库复制到另一个数据库