最近使用Entity Framework做一个中型的项目,一张表含有千万条数据,并没有使用很复杂的查询,只是程序上使用了DTO进行帅选数据,且使用了分页,效果很不理想。经过跟踪sql,我发现很多简单的查询,都存在子查询,而子查询往往会影响到查询性能,在这里,我想问问大虾,除了自己写SQL语句,有没有更好的解决办法在Entity Framework基础上处理这个问题?
如图所示:
Entity Framework查询代码
private async Task<QuotationDto[]> GetEntitys(int pageIndex, int pageSize) { var entitys = await Db.Quotations.Where(x => x.IsDelete == false && x.IsPass).OrderByDescending(x => x.CreatedDateTime).Select(x => new QuotationDto { ProductName = x.Name, Id = x.Id, Price = x.YouPrice, UserName = x.UserName, Address = x.ProvinceText + x.CityText + x.CountyText + x.TownText + x.VillageText, RangeTime = EntityFunctions.DiffSeconds(x.CreatedDateTime, DateTime.Now) }).Skip(pageIndex * pageSize).Take(pageSize).ToArrayAsync(); return entitys; }
生成的SQL语句
时间: 2024-10-09 17:28:42