2009-08-27 96 views
1

我正在研究一个对程序执行任意脚本的.NET程序。重新使用ADO.NET命令对象是一个好主意吗?

当运动课开始写数据库访问代码,他简单地暴露一个命令对象,其被重新使用的应用程序的其余部分(设置CommandText/Type,主叫ExecuteNonQuery()等)为每个语句。

我想这是一个重复的,相同的语句的重大性能打击,因为它们每次都被重新解析。

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

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

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

回答

2

创建新的命令对象有一些额外的开销,所以在某些情况下,重用相同的命令是有意义的。但是,对于整个应用程序来说,一般情况下它似乎有点奇怪。

1

性能命中通常来自建立到数据库的连接,但ADO.NET创建一个连接池来帮助这里。

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

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

相关问题