ADO.Net - Execute Reader和Execute Scalar之间的性能差异

时间:2017-09-28 13:00:07

标签: ado.net executescalar executereader

我知道Execute Reader和Execute Scalar的目的。但是Execute Reader可以达到Execute Scalar的目的。那么为什么要使用Execute Scalar呢?它们之间有任何性能差异吗? 哪个更快?

感谢。

1 个答案:

答案 0 :(得分:0)

差异取决于IDbCommand实施;当ExecuteScalar在内部执行与ExecuteReader相同的代码时,性能通常是相同的:良好的示例是SqlCommand:两种方法都调用内部RunExecuteReader方法,因此没有任何区别性能

许多流行的IDbCommand实现与SqlClient(MySqlConnector,NpgSql,Microsoft.Data.Sqlite)的工作方式相同,但可能有一个ADO.NET连接器可以为{{1}提供更好的性能}。 简而言之,如果您调用具体类(例如,SqlCommand),则可以使用ExecuteReader或ExecuteScalar。如果您使用IDbCommand接口(例如,在可重用库中)并且对ExecuteScalar的实现使用一无所知,则在与具有特别优化实现的连接器一起使用时可能会带来一些性能优势。