我使用的是廉价服务器,并且正在努力提高查询结果的性能速度。有机会做到吗?在工作示例中,我有一个实体模型:
public class VesselModel
{
[Key]
public int VesselId { get; set; }
public int VesselImo { get; set; }
public int VesselMmsi { get; set; }
public string DpClass { get; set; }
public string DpValid { get; set; }
[ForeignKey(nameof(ManagerId))]
public CompanyModel CompanyManager { get; set; }
public ICollection<VesselUser> VesselsUsers { get; set; }
}
和一个视图模型:
public class ResultViewModel
{
public int VesselImo { get; set; }
public int VesselMmsi { get; set; }
}
我的查询如下:
var vessels = _context.Vessels.OrderBy(v => v.Name).AsNoTracking();
if (search.DpClass != null && search.DpClass.Length != 0)
vessels = vessels.Where(data => data.DpClass != null).Where(data => search.DpClass.Any(x => data.DpClass.Contains(x)));
if (search.DpValid != null && search.DpValid.Length != 0)
vessels = vessels.Where(data => data.DpValid != null).Where(data => search.DpValid.Any(x => data.DpValid.Contains(x)));
return vessels;
上述查询搜索与 DpClass
和/或 DpValid
值匹配的项目。当它完成时,IQueryable<VesselModel>
被传递给服务类,在那里它被视图模型解析:
return from vessel in vessels
select new ResultViewModel
{
VesselId = vessel.VesselId,
VesselImo = vessel.IMO.Value,
VesselMmsi = vessel.MMSI.Value
};
并将这个结果传递给控制器。我想知道,您是否看到任何提高此查询性能的方法?因为对于一个大数据库来说,得到这些结果仍然需要很多时间:(