我知道Execute Reader和Execute Scalar的目的。但是Execute Reader可以达到Execute Scalar的目的。那么为什么要使用Execute Scalar呢?它们之间有任何性能差异吗? 哪个更快?
感谢。
答案 0 :(得分:0)
差异取决于IDbCommand
实施;当ExecuteScalar
在内部执行与ExecuteReader
相同的代码时,性能通常是相同的:良好的示例是SqlCommand:两种方法都调用内部RunExecuteReader
方法,因此没有任何区别性能
许多流行的IDbCommand
实现与SqlClient(MySqlConnector,NpgSql,Microsoft.Data.Sqlite)的工作方式相同,但可能有一个ADO.NET连接器可以为{{1}提供更好的性能}。
简而言之,如果您调用具体类(例如,SqlCommand),则可以使用ExecuteReader或ExecuteScalar。如果您使用IDbCommand接口(例如,在可重用库中)并且对ExecuteScalar的实现使用一无所知,则在与具有特别优化实现的连接器一起使用时可能会带来一些性能优势。