重新使用ADO.NET命令对象是个好主意吗?

时间:2009-08-27 15:21:56

标签: ado.net command reusability

我正在开发一个针对数据库执行任意脚本的.NET程序。

当一个大学开始编写数据库访问代码时,他只是将一个命令对象暴露给重用的应用程序的其余部分(设置CommandText / Type,调用ExecuteNonQuery()等等。)每个陈述。

我认为这对于重复的,相同的语句来说是一个很大的性能影响,因为它们每次都会被重新解析。

我想知道的是:如果每个语句与前一个语句不同(不仅是不同的参数,而是完全不同的语句),这是否会降低执行速度?我在文档中无法轻易找到答案。

顺便说一句,使用的RDBMS是Oracle,但我想这个问题并不是特定于数据库的。

P.S。我知道暴露相同的Command对象不是线程安全的,但这不是问题。

2 个答案:

答案 0 :(得分:2)

创建新命令对象涉及一些开销,因此在某些情况下重用同一命令是有意义的。但是,正如整个应用程序强制执行的一般情况似乎有点奇怪。

答案 1 :(得分:1)

性能影响通常来自建立与数据库的连接,但ADO.NET创建了一个连接池以帮助此处。

如果您希望每次都避免解析语句,可以将它们放入存储过程中。

我想你的同事只是使用了一些旧的风格方法,他继承自在其他平台上工作,重用命令对象确实有所作为。