什么是从一个DataTable

问题描述:

什么是填充从数据表SQLite数据库在C#.NET 2.什么是从一个DataTable

每一行目前我建立插入statments表中以最快的方式填充SQLite表最快的方法。我试过了一个dataadaptor,但速度似乎没有更快。目前需要5分钟循环20000行并将它们写入数据库。 任何sugestions?

解决方案:

我发现surounding插入statments块与BEGIN ... COMMIT为我工作的一个显着的速度提升:

BEGIN; 
INSERT INTO friends (name1,name2) VALUES ('john','smith'); 
INSERT INTO friends (name1,name2) VALUES ('jane','doe'); 
COMMIT; 

我的INSERT语句是大约500字节每个,所以我将发言次数限制为每次交易100次。

请参阅从SQLite的网站这个FAQ条目:

http://www.sqlite.org/faq.html#q19

默认情况下,每一个INSERT语句是它自己的事务。但是,如果使用BEGIN ... COMMIT包围多个INSERT语句,则所有插入操作都会分组到一个事务中。提交事务所需的时间将在所有随附的插入语句中摊销,因此每个插入语句的时间会大大减少。

+0

有趣。我想知道BEGIN ... COMMIT块包含多少条语句 – fishhead 2010-01-12 23:20:56

+0

您可以使用7200 RPM硬盘每秒执行60次事务。将您的写入速度(例如5MB/s)除以60以获得每个事务的字节数,然后将其除以您的记录大小以获得每次事务的插入次数。 – 2010-01-12 23:24:57

+0

似乎是使用开始和提交的好方法 – Thunder 2010-01-13 05:28:08

参见this thread

最好的方法是使用ExecuteNonQuery(),它一次提交所有的插入,并且不必一直分配字符串。 20,000行应该花费不到一分钟的时间。