0

IDbCommand.CommandTypeの値がパフォーマンスの点で違いを生むかどうかに興味がありますか?

CommandType.Text基本的には、SQL クエリ"EXEC sp_my_stored_procedure ..."を CommandText として設定して渡すことができます。または、それを設定してCommandType.StoredProcedure、ストアド プロシージャ名「my_stored_procedure」を CommandText として渡すこともできます。

ここでパフォーマンスに違いがあるのか​​ 、それともSPを呼び出すクエリを渡すのとSPの名前を渡すだけの問題なのでしょうか。


補足として、ドライバーに依存する可能性があることは認識していますが、よくわかりません。それで、もしそうなら、私もそれを知りたいです。ありがとう!

4

2 に答える 2

2

CommandType.StoredProcedure を使用すると、より効率的です。影響は、アプリの負荷に応じて感じられます。

私の意見では、それもきれいです。通常、実行時にコマンドを作成する必要がある場合は CommandType.Text を使用します (つまり、SELECT ID、名前 FROM テーブル WHERE .......)。

これが役に立てば幸いです、ケビン

于 2011-07-27T15:55:43.557 に答える
1

IfxCommandという名前の内部プロパティを持つInformix オブジェクト: に反映されますAdjustedCommandText。このメソッドは、CommandType に基づいてドライバーに送信する文字列値をフォーマットしているようです。

興味深いのは、TableDirect に対して何かを返したり、StoredProcedure に対して別のものを返したりすることです。または、保存されたテキストのみ。さて、StoredProcedure はさらに深くなります。コマンド パラメータがない場合は、"EXECUTE PROCEDURE ..." を返すだけですが、関連するコマンド パラメータがある場合は、"{?=CALL ..." または {CALL ..." で始まる文字列を作成します。

したがって、Informix に関する限り、明快さとクリーンさ以外に違いはないと言えます。他のデータベース ドライバに関しては、まだ調べていません。

于 2011-07-27T19:38:09.473 に答える