Delphi7 + sqlite3 怎么提高效率?
Delphi7 + sqlite3
我使用aslite3控件连接的,现在在向数据库中插入数据时速度很慢,怎么能提高呢?
For Loop:= 0 To Count - 1 Do //这个循环大概100次,此循环大概就需要7,8秒
Begin
ASQLite3InlineSQL1.Append ('INSERT INTO table1 (F1,F2,F3,F4,F5) VALUES (' + '''' + V1.Strings [Loop] + '''' + ',' + '''' + V2 + '''' + ',' + '''' + V3 + '''' + ',' + '''' + V4 + ''''+ ',' + IntToStr(V5) + ');');
End;
ASQLite3InlineSQL1.SQL:= loc_obj_SQLs;
ASQLite3DB1.ExecuteInlineSQL:= True;
ASQLite3DB1.ExecStartTransaction(''); //网上找的代码说是事务处理,不知道正确不正确
ASQLite3DB1.SQLite3_ExecSQL(loc_obj_SQLs.Text);
ASQLite3DB1.Commit
追问:版本不太清楚,但是没有BeginTrans这个方法,我用的ExecStartTransaction方法也是事物处理吧?经过试验了,插入一个表的记录(只运行上面一段代码)的时候,速度挺快。我使用同一个事件还插入另一个表记录,也就是说启用了两次事务也提交了两次事务,这个时候就很慢,请问又什么解决的办法吗?commit没在循环中
答案:Sqlite 插入之前,先开启事务, 最后 Commit 这样速度是没有加是的 N倍以上。。
代码大概如下...不知道你用的哪个版本...请修改为相应的:
Connection1.BeginTrans;
for i := 0 to 100 do
begin
//Insert into table...往数据表插入数据
end;
Connection1.EndTrans;
其他:最后commit一次就行
上一个:sqlite3应该如何安装使用?
下一个:在C#里面 怎么设置Sqlite的相对的连接字符串?