SQLite执行非常慢非查询
本文关键字:查询 非常 执行 SQLite | 更新日期: 2023-09-27 18:01:12
我使用的是SQLite,但当我开始执行非查询时,可能会有10k多个命令[.sql file]。我发现它非常慢,可能需要10分钟以上才能将信息添加到数据库中。
无论如何,这是我的ExecuteNonQuery代码。
public int ExecuteNonQuery(string sql)
{
var cnn = new SQLiteConnection(_dbConnection);
cnn.Open();
var mycommand = new SQLiteCommand(cnn) {CommandText = sql};
int rowsUpdated = mycommand.ExecuteNonQuery();
cnn.Close();
return rowsUpdated;
}
我希望有一种方法可以让它只需要几秒钟就完成。
SQLite的问题是在事务中有换行-插入-更新-删除命令,否则速度会非常慢。您可以使用.NET数据提供程序中内置的事务支持来完成此操作,或者由于您正在读取.sql文件,因此可以将第一行设置为begin transaction
,将最后一行设置为commit transaction
。无论哪种方式都应该有效。
如果您想在.sql文件中执行此操作,那么它可能是这样的。
begin transaction;
insert into ...;
update ...;
delete ...;
commit transaction;
或者,如果你在代码中这样做,它会是这样的。
public int ExecuteNonQuery(string sql)
{
var cnn = new SQLiteConnection(_dbConnection);
cnn.Open();
var transaction = cnn.BeginTransaction();
var mycommand = new SQLiteCommand(cnn) {CommandText = sql};
mycommand.Transaction = transaction;
int rowsUpdated = mycommand.ExecuteNonQuery();
transaction.Commit();
cnn.Close();
return rowsUpdated;
}