GVKun编程网logo

mssql insert into 和insert into select性能比较(insert into和select连用)

3

在本文中,我们将给您介绍关于mssqlinsertinto和insertintoselect性能比较的详细内容,并且为您解答insertinto和select连用的相关问题,此外,我们还将为您提供关于

在本文中,我们将给您介绍关于mssql insert into 和insert into select性能比较的详细内容,并且为您解答insert into和select连用的相关问题,此外,我们还将为您提供关于hive insert into 语句 和 insert overwrite 语句、Insert Into select 与 Select Into 哪个更快?、insert into select(insert select)和select into from语句、INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别的知识。

本文目录一览:

mssql insert into 和insert into select性能比较(insert into和select连用)

mssql insert into 和insert into select性能比较(insert into和select连用)

使用insert into table(field,...)values(value,...),insert into table(field,...)...的情况

使用insert into table(field,...)select(value,...) union all select(value,...) union all select(value,...) ...的情况

我一次插入的数据是:1190条。用insert into所用的时间在510毫秒上下徘徊,而用insert into select所用的时间在16毫秒上下徘徊。

hive insert into 语句 和 insert overwrite 语句

hive insert into 语句 和 insert overwrite 语句

1、insert  into 语句

hive> insert into table userinfos2 select id,age,name from userinfos;


2、insert overwrite 语句

hive> insert overwrite table userinfos2 select id,age,name from userinfos;


两者的区别:

insert overwrite 会覆盖已经存在的数据,如被覆盖的表中有 3 条数据和要插入的一条数据相同,那么覆盖后只会有一条数据;

insert into 只是简单的 copy 插入,不做重复性校验;


Insert Into select 与 Select Into 哪个更快?

Insert Into select 与 Select Into 哪个更快?

在平常数据库操作的时候,我们有时候会遇到表之间数据复制的情况,可能会用到INSERT INTO SELECT 或者 SELECT INTO ;

那么二者语法上有什么区别?性能上又如何呢?

围绕着这两个问题,今天就来总结对比下:

一:语法区别

1: INSERT INTO SELECT  的语法

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

如果两个表的结构一致,字段类型一致:

INSERT INTO table2
SELECT * FROM table1;

如果两个表结构不一致,只有某几列一致:

INSERT INTO table2 (column_name)
SELECT column_name FROM table1;

2:SELECT INTO 的语法

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

如果想要复制所有的列:

SELECT *
INTO newtable
FROM table1;

如果想要复制部分的列:

SELECT column_name
INTO newtable
FROM table1;

提示:新表将会使用 SELECT 语句中定义的列名称和类型进行创建。如果想要修改字段的名称,可以使用 AS 子句来应用新名称。

 

二:性能区别

----创建一个基础数据库
CREATE TABLE TestDataTable(
	id int not null,
	userName varchar(20),
	remark varchar(100)
)
----填充100W测试数据
DECLARE @id INT,@userName NVARCHAR(50),@remark NVARCHAR(50);
DECLARE @i INT;

SET @id=0;
SET @userName ='''';
SET @remark='''';
SET @i=0;

WHILE @i<1000000 
BEGIN
	SET @id=@i;
	IF(@i%2=0)
		begin
			set @userName=''二狗子'';
			set @remark=''SELECT INTO 最快!''
		end
	else
		begin
			set @userName=''李四'';
			set @remark=''快你妹,INSERT INTO 最快''
		end
	INSERT INTO TestDataTable(id,username,remark)
	VALUES (@id,@username,@remark ) 
	SET @i=@i+1
END

--查询填充后的数据 SELECT * FROM TestDataTable
--删除表结构以及数据【慎用】 DROP Table TestDataTable

  耗时1分钟58秒,数据填充好了,真是不给力,竟然用了快2分钟;

好了,在去创建一个目标数据库;

--创建一个目标数据库,把100W数据复制到这个里面取
CREATE TABLE TargetDB(
	id int not null,
	userName varchar(20),
	remark varchar(100)
)

测试1:INSERT INTO SELECT

SET STATISTICS TIME ON
INSERT INTO TargetDB
SELECT *
FROM TestDataTable
GO
SET STATISTICS TIME OFF

 

 

测试2:SELECT INTO

SET STATISTICS TIME ON
SELECT *
INTO TargetDB
FROM TestDataTable
GO
SET STATISTICS TIME OFF

 

三:结论

经过上面的对比,可以看出SELECT INTO 的性能要比INSERT INTO 快出不少;

虽然SELECT INTO 数据的导入速度有很大优势,但是也有不好的地方,就是此语句只能在目标表没有创建的情况下使用,如果目标表结构已经存在,就会提示数据库中已存在名为 ''TargetDB'' 的对象(如下图),此时就只能用INSERT INTO SELECT 方式去操作了。

 

insert into select(insert select)和select into from语句

insert into select(insert select)和select into from语句

 

1、insert into select(insert select)语句

要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量

语句形式为:
1 Insert into Table2(field1,field2,...) select value1,value2,... from Table1

上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,我们可以先将需要查询的字段join起来,然后组成一个视图后再select from就可以了,sql代码如下所示:

1 INSERT INTO a(field1,field2) SELECT * FROM(SELECT f1,f2 FROM b JOIN c) AS tb
实例:

向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“3”课程的同学学号、2号课的平均成绩;

1 Insert score 
2 select s.id,''6'',(Select avg(score) from score where course_id=''2'') 
3 from student s 
4 where s.id not in (Select student_id from score where course_id=''3'');
注意:

(1)要求目标表Table2必须存在,并且字段field,field2…也必须存在

(2)注意Table2的主键约束,如果Table2有主键而且不为空,则 field1, field2…中必须包括主键

(3)注意语法,不要加values,和插入一条数据的sql混了,不要写成:

1 Insert into Table2(field1,field2,...) values (select value1,value2,... from Table1)  //错误的写法

由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。

2、select into from 语句

要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。示例如下

语句形式为:

1 SELECT vale1, value2 into Table2 from Table1

 

INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别

INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别

1.INSERT INTO SELECT语句

语句形式为:Insert into Table2(field1,field2,...) select value1,value2,... from Table1 要求目标表Table2必须存在,由于目标表Table2已经存在,所以我们除了插入源表Table1的字段外,还可以插入常量。示例如下: INSERT INTO SELECT语句复制表数据
代码如下:
--1.创建测试表
create TABLE Table1
(
a varchar(10),
b varchar(10),
c varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY] create TABLE Table2
(
a varchar(10),
d int,
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO
--2.创建测试数据
Insert into Table1 values('赵','asds','90')
Insert into Table1 values('钱','100')
Insert into Table1 values('孙','80')
Insert into Table1 values('李',null)
GO
select * from Table2 --3.INSERT INTO SELECT语句复制表数据
Insert into Table2(a,c,d) select a,5 from Table1
GO --4.显示更新后的结果
select * from Table2
GO
--5.删除测试表
drop TABLE Table1
drop TABLE Table2

2.SELECT INTO FROM语句

语句形式为:SELECT vale1,value2 into Table2 from Table1 要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中。示例如下: SELECT INTO FROM创建表并复制表数据
代码如下:
--1.创建测试表
create TABLE Table1
(
a varchar(10),
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
a ASC
)
) ON [PRIMARY]
GO --2.创建测试数据
Insert into Table1 values('赵',null)
GO --3.SELECT INTO FROM语句创建表Table2并复制数据
select a,c INTO Table2 from Table1
GO --4.显示更新后的结果
select * from Table2
GO
--5.删除测试表
drop TABLE Table1
drop TABLE Table2

今天关于mssql insert into 和insert into select性能比较insert into和select连用的讲解已经结束,谢谢您的阅读,如果想了解更多关于hive insert into 语句 和 insert overwrite 语句、Insert Into select 与 Select Into 哪个更快?、insert into select(insert select)和select into from语句、INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别的相关知识,请在本站搜索。

本文标签:

上一篇MSSQL Server 查询优化方法 整理(sql server有哪些查询优化方法)

下一篇MSSQL 数据库备份和还原的几种方法 图文教程(sql数据库备份还原步骤)