我的实体结构如下:
public class DisbursementItem
{
public int DisbursementNumber;
public int IDDisbursementItem;
public int IDReceiptItem;
public decimal Amount;
public decimal MeasureUnit;
public decimal PricePerMU;
public decimal PriceTotal;
public Disbursement Disbursement_IDDisbursement;
public int IDDisbursementNumber;
}
public class Disbursement
{
public int DisbursementNumber;
DateTime date;
DisbursementType DType;
string Note;
string Subscriber;
Subscriber SubscriberModel;
string ItemType;
int ProcessNumber;
}
public class Subscriber
{
public string Name
public string Address;
public string City;
}
public class DisbursementDescription
{
public int IDDisbursementItem;
public string Description;
}
public class Receipt
{
public int IDReceiptItem;
public int ItemNumber;
}
public class StorageCard
{
public int ItemNumber;
public string StorageCardGroup;
public string StorageCardName;
}
我的EF6 LINQ查询是:
第一次
这就是我想在EF中实现的SQL查询
对于几百行,这个查询可能需要一分钟以上的时间。我该如何优化它呢?我怀疑多个联接是个问题,可能还有一些字段的Sum
。
也无法修改数据库模式。
它生成的查询是巨大的。它就像一个SELECT在SELECT在SELECT的大约40倍。
2条答案
按热度按时间e0bqpujr1#
最简单的方法是将结果所需的所有字段添加到分组关键字中。为提高可读性和可维护性,对Query语法进行了重写:
dzhpxtsq2#
你可以尝试一些多线程技术
可以将查询拆分为多个部分,并将每个部分分配给一个任务。在这里,您应该可以找到一些有用的内容(并行部分):
https://learn.microsoft.com/en-us/dotnet/api/system.threading.tasks?view=net-6.0