私はReaderを実行し、Scalarを実行する目的を知っています。しかし、Execute ReaderはScalarを実行する目的に役立ちます。では、なぜExecute Scalarを使うのですか?それらの間にパフォーマンスの違いはありますか? どちらが速いですか?ADO.Net - ReaderとExecute Scalarのパフォーマンスの差
ありがとうございました。
私はReaderを実行し、Scalarを実行する目的を知っています。しかし、Execute ReaderはScalarを実行する目的に役立ちます。では、なぜExecute Scalarを使うのですか?それらの間にパフォーマンスの違いはありますか? どちらが速いですか?ADO.Net - ReaderとExecute Scalarのパフォーマンスの差
ありがとうございました。
違いはIDbCommand
の実装に依存します。 ExecuteScalar
がExecuteReader
と同じコードを内部的に実行した場合のパフォーマンスは同じです:良い例はSqlCommandです:両方のメソッドが内部でRunExecuteReader
メソッドを呼び出すため、パフォーマンスに違いはありません。
普及しているIDbCommand
の実装の多くは、SqlClient(MySqlConnector、NpgSql、Microsoft.Data.Sqlite)と同じ方法で動作しますが、ExecuteScalar
のパフォーマンスが向上するADO.NETコネクタを使用する可能性があります。つまり、具体的なクラス(たとえば、SqlCommand)を呼び出すと、ExecuteReaderまたはExecuteScalarのいずれかを使用できます。 IDbCommandインタフェース(再利用可能なライブラリなど)を使用していて、ExecuteScalarの実装の使用方法について何も知らない場合、特に最適化された実装を持つコネクタで使用すると、パフォーマンス上のメリットが得られる可能性があります。