[英]LINQ Select Distinct By One Column Timeout Error
I have a large table (~3 million rows) that I'm querying for just a few records using a distinct column (OperationTypeId). 我有一个很大的表(约300万行),使用唯一列(OperationTypeId)来查询一些记录。 In SQL Management Studio, I'm using the following query which executes in 4 seconds and return 7 rows.
在SQL Management Studio中,我使用以下查询,该查询在4秒内执行并返回7行。
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
I'm trying to accomplish the same result in code using LINQ to SQL, and this is my code. 我正在尝试使用LINQ to SQL在代码中实现相同的结果,这是我的代码。
var temp = dbConn.TP_Transactions
.GroupBy(x => x.OperationTypeId)
.Select(g => new {OperationTypeId = g.Key, ReferenceNumber = g.FirstOrDefault().ReferenceNumber})
.ToList();
However, this code results in an exception: 但是,此代码导致异常:
Timeout expired.
超时时间已到。 The timeout period elapsed prior to completion of the operation or the server is not responding.
在操作完成之前超时或服务器没有响应。
Please advise on what I can do to accomplish this query. 请告知我该怎么做才能完成此查询。
I ended up doing this instead. 我最终改为这样做。 It still takes a significant amount of time to run (~2 minutes) but at least I'm getting some results back.
它仍然需要大量时间(〜2分钟)运行,但是至少我得到了一些结果。
const string sqlQuery = @"SELECT *
FROM (SELECT t.ReferenceNumber,
ROW_NUMBER() OVER (PARTITION BY OperationTypeId ORDER BY OperationTypeId) AS RowNumber
FROM TP_Transaction t) AS a
WHERE a.RowNumber = 1";
var temp = dbConn.ExecuteQuery<Temp>(sqlQuery).ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.