私はデータベースに対して任意のスクリプトを実行する.NETプログラムに取り組んでいます。
同僚がデータベースアクセスコードを書き始めたとき、彼は1つのコマンドオブジェクトをアプリケーションの残りの部分に公開し、各ステートメントで再利用(設定CommandText
/ Type
、呼び出しなど)しました。ExecuteNonQuery()
毎回新しく解析されるため、これは繰り返される同一のステートメントのパフォーマンスに大きな打撃を与えると思います。
しかし、私が疑問に思っているのは、各ステートメントが前のステートメントと異なる場合(パラメーターが異なるだけでなく、ステートメントがまったく異なる場合)、実行速度も低下するのでしょうか?ドキュメントでその答えを簡単に見つけることができませんでした。
ところで、使用されるRDBMSはOracleですが、この質問は実際にはデータベース固有のものではないと思います。
PS同じCommand
オブジェクトを公開することはスレッドセーフではないことを私は知っていますが、それはここでは問題ではありません。