为什么第一个查询正在运行? 第一个查询在15秒内运行 但是很长一段时间后第二次查询没有运行
_orderItems
.Include(x => x.Order)
.Include(x => x.ProductInfo)
.Include(x => x.SheedProduct)
.Where(p =>
p.Order.IsDone &&
(p.SheedProductId == searchModel.SheedProductId || searchModel.SheedProductId == 0) &&
(p.Order.CreationTime.Year >= searchModel.YearFrom || searchModel.YearFrom == 0) &&
(p.Order.CreationTime.Year <= searchModel.YearTo || searchModel.YearTo == 0) &&
(p.Order.CreationTime >= searchModel.DateFrom || searchModel.DateFrom == null) &&
(p.Order.CreationTime <= searchModel.DateTo || searchModel.DateTo == null))
.Select(x => new
{
x.Order.CreationTime,
x.ProductInfo.IsBulk,
x.SheedProductId,
x.Order.TotalPrice,
x.SheedProduct.Title
})
.ToList();
OrderItems总行50000 订货50000 总时间15 s
查询2
(from order in _orders
join orderItem in _orderItems
on order.SheedOrderId equals orderItem.OrderId
where order.IsDone &&
(order.CreationTime.Year >= searchModel.YearFrom || searchModel.YearFrom == 0) &&
(order.CreationTime.Year <= searchModel.YearTo || searchModel.YearTo == 0) &&
(order.CreationTime >= searchModel.DateFrom || searchModel.DateFrom == null) &&
(order.CreationTime <= searchModel.DateTo || searchModel.DateTo == null)
join productInfo in _productInfos
on orderItem.ProductInfoId equals productInfo.Id
join sheedProduct in _products
on productInfo.SheedProductId equals sheedProduct.Id
where (orderItem.SheedProductId == searchModel.SheedProductId || searchModel.SheedProductId == 0)
select new
{
order.CreationTime,
productInfo.IsBulk,
sheedProduct.Id,
order.TotalPrice,
sheedProduct.Title
})
.ToList();
与在查询的最后一个条件或联接查询上设置条件的情况有什么区别 例子
var query =
(from order in _orders
join orderItem in _orderItems
on order.SheedOrderId equals orderItem.OrderId
join productInfo in _productInfos
on orderItem.ProductInfoId equals productInfo.Id
join sheedProduct in _products
on productInfo.SheedProductId equals sheedProduct.Id
where order.IsDone &&
(order.CreationTime.Year >= searchModel.YearFrom || searchModel.YearFrom == 0) &&
(order.CreationTime.Year <= searchModel.YearTo || searchModel.YearTo == 0) &&
(order.CreationTime >= searchModel.DateFrom || searchModel.DateFrom == null) &&
(order.CreationTime <= searchModel.DateTo || searchModel.DateTo == null) &&
(orderItem.SheedProductId == searchModel.SheedProductId || searchModel.SheedProductId == 0)
select new
{
order.CreationTime,
productInfo.IsBulk,
sheedProduct.Id,
order.TotalPrice,
sheedProduct.Title
})
.ToList();
在查询的最后一个位置设置竞争条件