我有一个大表(约300万行),使用唯一列(OperationTypeId)来查询几条记录。在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
我正在尝试使用LINQ to SQL在代码中完成相同的结果,这是我的代码。
var temp = dbConn.TP_Transactions
.GroupBy(x => x.OperationTypeId)
.Select(g => new {OperationTypeId = g.Key, ReferenceNumber = g.FirstOrDefault().ReferenceNumber})
.ToList();
但是,此代码导致异常:
超时时间已到。在操作完成之前超时或服务器没有响应。
请告知我该怎么做才能完成此查询。
我最终还是这样做了。它仍然需要大量时间(〜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();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句