加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 使用显式create table语句和select into创建一个表

发布时间:2020-12-12 16:52:05 所属栏目:MsSql教程 来源:网络整理
导读:使用显式创建表语句和加载数据与选择之间是否存在任何性能差异.此示例仅显示2列,但问题是面向使用非常大的表.下面的示例也使用临时表,虽然我想知道使用常规表的效果.我认为他们将是一样的,不管表类型. 临时表情景: --- Explicitly creating temp table first
使用显式创建表语句和加载数据与选择之间是否存在任何性能差异.此示例仅显示2列,但问题是面向使用非常大的表.下面的示例也使用临时表,虽然我想知道使用常规表的效果.我认为他们将是一样的,不管表类型.

临时表情景:

--- Explicitly creating temp table first and then loading.
create table #test1 (id int,name varchar(100))
insert into #test1 (id,name) select id,name from #bigTable

--- Creating temp table by selecting into.
select id,name into #test2 from #bigTable

或普通表:

--- Explicitly creating table first and then loading.
create table test1 (id int,name varchar(100))
insert into test1 (id,name from #bigTable

--- Creating table by selecting into.
select id,name into test2 from bigTable

大家对此有何想法?我认为明确创建表和加载必须具有比选择为select的更好的性能,以便在语句中评估表达式才能创建一个表.

我们的组织通常将临时表格明确地作为标准做法,我们想知道一切都认为是最佳实践.

http://msdn.microsoft.com/en-us/library/ms188029.aspx

解决方法

在插入数据之前,CREATE TABLE可以更好地控制表的定义,例如NOT NULL,约束等,您不能使用SELECT INTO执行的操作.

SELECT INTO是一种最低限度的记录操作,但在某些情况下,INSERT..SELECT也可以进行最低限度的记录.
请参见The Data Loading Performance Guide,特别是部分:总结最小记录条件.

简而言之,如果你不在乎约束等(例如你想快速创建表的副本),SELECT..INTO的优势IMHO是一个较短的代码.否则,您应该使用另一种方式,您仍然可以将其最小化记录.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读