【发布时间】:2016-04-26 00:24:04
【问题描述】:
我正在从两个表中获取记录,一个是 VehicleDetails,另一个是 Barcodedetails。
车辆详细信息包含 10,000 条记录,条形码详细信息包含 110 万条记录,并且每辆车都映射到特定的条形码。
目前我正在做的首先是从 BarcodeDetailsTable 获取所有 BarcodeDetails,完成它需要 8 秒,
List<VTSBarCodeDetail> barCodeDetailMaster = barCodeDetailRepository.Get(null, null) as List<VTSBarCodeDetail>;
然后我会得到车辆详细信息
List<VTSVehicleRegistrationObject> vehicleRegObject = (Some Simple query to get the VehicleRegobject)
然后我在这个for循环中运行一个for循环,我将barcodeno passtype等详细信息添加到列表中。这个 for 循环需要 1 分钟的时间来完成 6k 条记录。 这是我的代码和日志文件,看看这个。
foreach (VTSVehicleRegistrationObject item in vehicleRegObject)
{
barCodeDetails = barCodeDetailMaster.Where(x => x.VehicleId == Convert.ToInt32(item.VehicleId) && x.BarCodeId == item.BarCodeId).FirstOrDefault();
{
//some Logic add item to this list.
}
【问题讨论】:
-
不要从包含 11Lakhs 记录的条码详细信息中获取所有记录。编写一个 LINQ/SQL 语句来选择所需的列并在这两个表上应用 JOIN。
-
我认为,如果您使用存储过程在 sql 级别预处理所有这些计算,这将很重要。
标签: c# asp.net .net asp.net-mvc asp.net-mvc-3