0
個別の列(OperationTypeId)を使用しているほんの少数のレコードに対してクエリを実行している大きなテーブル(〜300万行)があります。 SQL Management Studioでは、4秒後に実行され、7行を返す次のクエリを使用しています。LINQ Distinct By One列のタイムアウトエラーを選択
SELECT *
FROM (SELECT t.ReferenceNumber, t.OperationTypeId,
ROW_NUMBER() OVER (PARTITION BY OperationTypeId
ORDER BY OperationTypeId) AS RowNumber
FROM TP_Transaction t) AS a
WHERE a.RowNumber = 1
LINQ to SQLを使用して同じ結果を達成しようとしていますが、これは私のコードです。
var temp = dbConn.TP_Transactions
.GroupBy(x => x.OperationTypeId)
.Select(g => new {OperationTypeId = g.Key, ReferenceNumber = g.FirstOrDefault().ReferenceNumber})
.ToList();
しかし、例外で、このコードの結果は:
タイムアウトが発生しました。操作が完了する前にタイムアウト時間が経過したか、サーバーが応答していません。
このクエリを実行するために私ができることについてアドバイスしてください。
「OperationTypeId」にインデックスがありますか? Btw、 'FirstOrDefault'は不要です。あなたは' First'を安全に使うことができます。 –
残念ながら、いいえ:(。 – AngieM