我有以下查询:
var data = (from ftr in db.TB_FTR
join mst in db.TB_MST on ftr.MST_ID equals mst.MST_ID
join trf in db.TB_TRF on mst.TRF_ID equals trf.ID
select new TRFData
{
City = ftr.FTR_CITY,
County = ftr.FTR_COUNTY,
Type = trf.TRF_TYPE
}).ToList();
TB_FTR表包含3,000,000行,TB_MST有1,100,000行,TB_TRF有340行。我该如何使此工作工作?有什么技巧或解决方法吗?谢谢。
调用 ToList
您强制执行查询,然后问 asl 要加载在列表中的内存中的查询数据。您可以不用遵循这种方法,而是使用流式传输方法,而不是像您那样使用一种方法,您可以一次获得一个元素,甚至更好,甚至更好,您可以遵循分页方法来获取前100个记录,然后下一个100个记录(在另一个请求中(等等。
流
var items = (from ftr in db.TB_FTR
join mst in db.TB_MST on ftr.MST_ID equals mst.MST_ID
join trf in db.TB_TRF on mst.TRF_ID equals trf.ID
select new TRFData
{
City = ftr.FTR_CITY,
County = ftr.FTR_COUNTY,
Type = trf.TRF_TYPE
});
foreach(var item in items)
{
// ..
}
分页
var pageSize = 100;
var pageNumber = 1;
var first100Items = items.Skip(pageSize*PageNumber)
.Take(paeSize)
.ToList();