C# 当我在实体框架中调用Count方法时,它是处理所有列还是只处理一列?

C# 当我在实体框架中调用Count方法时,它是处理所有列还是只处理一列?,c#,.net,sql,entity-framework,optimization,C#,.net,Sql,Entity Framework,Optimization,我在寻找最佳化 当我在实体框架中调用Count方法时,它是处理所有列还是只处理一列 如果你也有任何官方网站谈论这一点,我将不胜感激 谢谢。我刚才做了一些测试,发现EF在服务器上进行计数,它会发送一个带有SELECT计数的查询,因此它不会确实加载所有记录 关于这些列,如果您指的是COUNT(*)或COUNT(Id)或COUNT(1)之间的差异,我刚才在什么地方读到,对于SQL Server没有差异,COUNT(*)被优化为COUNT(1) 你可以在网上读到很多文章或者在这里提问,所以。。。当然不是

我在寻找最佳化

当我在实体框架中调用Count方法时,它是处理所有列还是只处理一列

如果你也有任何官方网站谈论这一点,我将不胜感激


谢谢。

我刚才做了一些测试,发现EF在服务器上进行计数,它会发送一个带有SELECT计数的查询,因此它不会确实加载所有记录

关于这些列,如果您指的是
COUNT(*)
COUNT(Id)
COUNT(1)
之间的差异,我刚才在什么地方读到,对于SQL Server没有差异,
COUNT(*)
被优化为
COUNT(1)

你可以在网上读到很多文章或者在这里提问,所以。。。当然不是你要求的100%,而是关于EF和ORM性能的类似主题


你赢了我。我还打算在一篇文章中添加一个链接,内容是关于启用了general SQL Profiler的Count的性能,然后在.NET和EF中创建一个示例程序,并捕获对数据库的所有调用。您使用的是MS SQL Server,对吗?实际上我使用的是mysql,但我认为不会有什么不同。好的,您说查询是“SELECT COUNT”,但是“SELECT COUNT(*)或SELECT COUNT(column_name)”。如果我没有错的话,列名为的计数会更快,并且不会带来所有的数据。它肯定不是一个*,而是计数(1),您可以在SQL Server上进行测试。已经有连接器EF->MySQL了吗?!好!!是的,已经有一个官方连接器:嘿,你能检查一下使用WHERE name.Contains(“Jack”)的查询是否仍然计数(1)吗?因为这样,结果可能与GetAll计数不同。非常感谢。