EF 4.1を使用してテーブル上のアイテムを数える最も効果的な方法は何ですか?EF 4 Count()options performance
this.context.MyTable.Count(x.idTenant == 5);
または
this.context.MyTable.Where(x.idTenant == 5).Count();
それはよりパフォーマンスであること、テーブル内のエンティティをカウントするために、他の方法? LINQPadでこれをしようと
EF 4.1を使用してテーブル上のアイテムを数える最も効果的な方法は何ですか?EF 4 Count()options performance
this.context.MyTable.Count(x.idTenant == 5);
または
this.context.MyTable.Where(x.idTenant == 5).Count();
それはよりパフォーマンスであること、テーブル内のエンティティをカウントするために、他の方法? LINQPadでこれをしようと
:
SELECT COUNT(*) AS [value]
FROM [MyTable] AS [t0]
WHERE [t0].[idTenant] = @p0
が同じになるように生成されたSQLを示す:
var r1 = Users.Count(u => u.JurisdictionId == 5).Dump();
var r2 = Users.Where(u => u.JurisdictionId == 5).Count().Dump();
と生成されたSQL:
SELECT
[GroupBy1].[A1] AS [C1]
FROM (SELECT
COUNT(1) AS [A1]
FROM [System].[Users] AS [Extent1]
WHERE 5 = [Extent1].[JurisdictionId]
) AS [GroupBy1]
GO
SELECT
[GroupBy1].[A1] AS [C1]
FROM (SELECT
COUNT(1) AS [A1]
FROM [System].[Users] AS [Extent1]
WHERE 5 = [Extent1].[JurisdictionId]
) AS [GroupBy1]
これは、EF 4.2を使用しているが、これは4.1で同じでなければなりません。 LINQのからの出力によると、式は、彼らが発生するSQLが同じである
+1私は、最初の方がメソッド呼出しが少なくてもやや早く実行すると言っていると賭けています。 –
または最適化されています – Joe
私は答えることが十分に知りませんが、あなたの2つの例は、おそらく同じ式ツリーを作成する必要があります。 – Joe
http://stackoverflow.com/questions/890381/how-to-count-rows-withinentityframework-without-loading-contents –
@JoeTuskan、Reshaperが最初のものを提案しましたが、それが正しかったかどうかわかりませんそれを書く別の方法やパフォーマンスの向上があります。 – Romias