我的工作,对数据库执行任意脚本.NET程序。

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

我想象这是重复,相同的语句的大的性能损失,因为它们被解析每次重新

我想知道什么,虽然是:这会降低也执行速度,如果每个语句是从以前的一个(不只是不同的参数,而是一个完全不同的说法)有什么不同?我是不会轻易找到该文件中的答案。

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

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

有帮助吗?

解决方案

有是参与创建新的命令对象的一些开销,因此,在某些情况下,它可以使意义重新使用相同的命令。但被强迫为整个应用程序的一般情况下,它似乎比有点奇怪更多。

其他提示

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

如果你想避免解析的语句每次重新,你可以把它们转换为存储过程。

我想,你的同事只是使用了一些旧式的做法,他是从其他平台上工作,其中重用一个命令对象并有所作为继承。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top