如何从脚本中删除多余的插入语句以提高性能[重复]

Posted

技术标签:

【中文标题】如何从脚本中删除多余的插入语句以提高性能[重复]【英文标题】:How to remove redundant Insert Statements from a Script to improve the performance [duplicate] 【发布时间】:2016-05-10 09:11:24 【问题描述】:

我正在创建一个包含 700 多个 INSERT 语句的脚本

INSERT tableName ([A], [B], [D], [E]) VALUES (1, 1, N'a', N'p')
INSERT tableName ([A], [B], [D], [E]) VALUES (2, 1, N'x', N'o')
INSERT tableName ([A], [B], [D], [E]) VALUES (3, 1, N'y', N'u')
INSERT tableName ([A], [B], [D], [E]) VALUES (4, 1, N's', N't')
INSERT tableName ([A], [B], [D], [E]) VALUES (5, 1, N'y', N'w')
INSERT tableName ([A], [B], [D], [E]) VALUES (6, 1, N'z', N'z')
INSERT tableName ([A], [B], [D], [E]) VALUES (7, 1, N'k', N'f')

等等……

我想去掉多余的部分

插入表名([A]、[B]、[D]、[E])

有什么办法可以做到吗?

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

想象力:

比如,

INSERT tableName ([A], [B], [D], [E]) MULTIPLE VALUES
   (1, 1, N'a', N'p')
 , (2, 1, N'x', N'o')
 , (3, 1, N'y', N'u')
 , (4, 1, N's', N't')
 , (5, 1, N'y', N'w')
 , (6, 1, N'z', N'z')
 , (7, 1, N'k', N'f')

请指导...我怎样才能提高性能,正如我已经提到的,我有 700 条记录要添加...来自单个脚本..

【问题讨论】:

是的,这是可能的,只需删除 multiple:msdn.microsoft.com/en-us/library/ms174335.aspx 参见此处:sqlfiddle.com/#!6/07202/1 可以在 SQL Server 中通过删除 Multiple.不确定其他供应商。 如果您提供表中的所有列,则不需要第一部分:假设您有列 A 到 E 和 C 应该始终为空,然后执行以下操作:INSERT tableName VALUES (1, 1, null, N'a', N'p') INSERT tableName VALUES (2, 1, null, N'x', N'o') INSERT tableName VALUES (3, 1, null, N'y', N 'u') INSERT tableName VALUES (4, 1, null, N's', N't') INSERT tableName VALUES (5, 1, null, N'y', N'w') INSERT tableName VALUES (6, 1, null, N'z', N'z') INSERT tableName VALUES (7, 1, null, N'k', N'f') 【参考方案1】:

你可以这样试试:

INSERT tableName ([A], [B], [D], [E])  VALUES
   (1, 1, N'a', N'p')
 , (2, 1, N'x', N'o')
 , (3, 1, N'y', N'u')
 , (4, 1, N's', N't')
 , (5, 1, N'y', N'w')
 , (6, 1, N'z', N'z')
 , (7, 1, N'k', N'f')

即,只需从您几乎自己得到的查询中删除MULTIPLE

【讨论】:

这会提高性能吗? @N.K:- 不完全是性能改进,但是是的,这是在插入多行时避免列名不明确的更好方法。 :)

以上是关于如何从脚本中删除多余的插入语句以提高性能[重复]的主要内容,如果未能解决你的问题,请参考以下文章

几个删除重复记录的SQL语句

如何忽略MySQL中insert语句的连续重复

如何从表格中删除多余的空白行?

用SQL语句,删除掉重复项只保留一条

连接多个表后如何从sql查询结果中删除重复记录

如何提高在SSIS中向表中插入数据的性能