【发布时间】:2012-05-02 05:31:30
【问题描述】:
DBA 告诉我,在使用 T-SQL 时:
select count(id) from tableName
比
快select count(*) from tablenName
如果 id 是主键。
将其外推到 LINQ-TO-SQL 是否准确?
此 LINQ-to-SQL 语句:
int count = dataContext.TableName.Select(primaryKeyId => primaryKeyId).Count();
比这个更高效:
int count = dataContext.TableName.Count();
【问题讨论】:
-
DBA 告诉过你什么?优化器通常对它们进行相同的解释。
-
在大多数 RDBMS 上,这不会产生任何影响......并且 如果有(通常不会),
count(1)将是,可能,甚至更好。但是,关于您最后的“性能更高”的问题-您尝试过吗?特别是,捕获用于两个查询的 SQL,看看是否不同。如果它是不同,则在启用 stats-io 等的情况下双向运行。 -
@JeremyHolovacs 你想要他的 SSN 吗? :) - 说真的:这是一个与我共事的人,从表面上看,从不质疑。从 cmets 和接受的答案看来,我被告知的内容是错误的。感谢大家解决这个问题!
标签: c# performance tsql linq-to-sql