Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 比较插入到查询中更好_Sql Server_Performance_Insert - Fatal编程技术网

Sql server 比较插入到查询中更好

Sql server 比较插入到查询中更好,sql-server,performance,insert,Sql Server,Performance,Insert,下面哪一个查询的性能更好?这两个问题的优点/缺点是什么?我想讨论插入1000行和100k行的场景,谢谢 第一 第二 我认为您需要使用批量插入。 下面是.net中的一个示例,第二个查询将执行得更好,因为DB引擎只需分析和执行一条语句。但是差异将是微不足道的,并且仅对大型插入(超过100条)重要,但最好的方法是 INSERT INTO table_name (col1,col2) VALUES (value1, value2),(value3, value4); 但是查询2的语法应该是 插入到表

下面哪一个查询的性能更好?这两个问题的优点/缺点是什么?我想讨论插入1000行和100k行的场景,谢谢

第一

第二


我认为您需要使用批量插入。
下面是.net中的一个示例,第二个查询将执行得更好,因为DB引擎只需分析和执行一条语句。但是差异将是微不足道的,并且仅对大型插入(超过100条)重要,但最好的方法是

INSERT INTO table_name (col1,col2) VALUES (value1, value2),(value3, value4); 
但是查询2的语法应该是 插入到表\u名称中 选择col1,col2 由( 选择value1作为col1,选择value2作为col2 UNION ALL 选择值3作为列1,选择值4作为列4
)A

但当我在SQL server 2000中运行此查询时,它抱怨编译时堆栈溢出。我只尝试插入300行。josephj1989给出的语法仅在SQL Server 2008中有效。
INSERT INTO table_name
SELECT (col1,col2) 
FROM (
    SELECT value1 as col1, value2 as col2 UNION ALL
    SELECT value3 as col1, value4 as col2
) A
INSERT INTO table_name (col1,col2) VALUES (value1, value2),(value3, value4);