2010-01-07 77 views
0

我一直在搞乱Visual Studio 2008中的SQLite设计器,我注意到当我使用生成的插入/更新语句时,它们运行速度非常慢。C#System.Data.SQLite设计器代码

例子:我有四列和5700行的数据表花了约5分钟,将数据插入到数据库表

不过,我写我自己的数据库连接,并插入使用参数的方法和单一的交易和相同的5700行插入1秒以内。

为什么生成的代码非常慢,甚至使用它有什么好处?

谢谢。

弥敦道

+0

您是否可以访问生成的方法?也许他们正在做额外的工作,比如将所有事情都包装在交易中,或者做额外的数据验证? – Eilon 2010-01-07 04:43:40

+0

我很确定他们将所有事情都包含在交易中,并且据我所知,我无法访问可以更改它的方法。 – Nathan 2010-01-07 04:48:04

回答

0

我读过SQLite中的默认行为是将每个Insert语句包装在一个事务中,我认为这解释了您所看到的行为。当SQLite引擎创建Insert语句时,需要很长时间,当你编写sql时,它会非常快速地运行。

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

0

如果我nderstood正确的是插入语句内置隐藏代码,它是正常的,它需要很长的时间来执行......它已经被编译,加工变成CLR等,如果您在数据库上使用存储过程时,需要更少的时间,因此在您从代码隐藏中调用该过程时,该过程已经完成了这些步骤。直接使用来自数据库的过程总是比使用代码隐藏更好更快。