在记录插入方面有效的数据库访问

时间:2011-10-03 18:36:06

标签: sql tsql insert data-access-layer

我为“菜鸟”问题提前道歉,但我在SQL的大多数方面仍然是一个新手。 我的问题源于SQL的艺术第二章的一部分。在标题为“稳定数据库连接”的段落中,作者提到了将大量行插入数据库的几种方法。以下是格式

的相应列表
Test; Results
Connect/Disconnect for each line in turn; 7.4 lines loaded per second  
Connect Once, all candidate lines individually inserted; 1,681 lines loaded per second  
Connect Once, all candidate lines inserted in arrays of 10 lines; 5,914 lines inserted per second  
Connect Once, all candidate lines inserted in arrays of of 100 lines; 9,190 lines inserted per second  

此外,作者还提到“直接加载技术甚至更快。”

不幸的是,我并不完全理解插入数组的想法(如果有的话)。在插入数组和他引用的其他“直接加载技术”方面,有没有人可以详细说明作者所指的技术?

2 个答案:

答案 0 :(得分:6)

作者正在展示

INSERT INTO Table (Column) 
VALUES ('myValue')

只会如此之快。

这样做会快得多

INSERT INTO Table (Column) 
VALUES ('myFirstValue'), 
('mySecondValue'), ...

作者说有10个VALUES个项目每秒插入5,914行,但如果单个SQL语句中有100个项目,则加载速率会达到每秒9,190行。

最后,“直接加载技术”指的是批量插入操作。您可以在Google msSQL bulk insert上查找大量有关上传文件然后将其处理到表格的教程。

答案 1 :(得分:4)

将大量数据插入SQLServer表的最快方法是将进程称为“批量插入”。有几种方法可以做到这一点。有一个名为bcp的SQL Server附带的命令行应用程序,有一个TSQL命令BULK INSERT,还有一个.NET sql客户端对象,System.Data.SqlClient.SqlBulkCopy。