我有一个查询,它在获取更少记录时花费更多时间,但在获取更多记录时花费的时间更少。
查询获取更多记录: -
SELECT Orders.OrderId, Orders.Action, OrderKey,_orderKeys.CustomerKey,
_orderKeys.Source, Orders.OrderStatusId, ErrorCode, ErrorDescription,
ServiceProviderID, ReprocessCount, EffectiveDate, CreateDate, LastModifiedDate,
SourceName,OrderStatus.StatusName as OrderStatusName,OrderXML
FROM dbo.OrdersArchive Orders WITH(NOLOCK) JOIN dbo.OrderKeys _orderKeys WITH(NOLOCK)
ON _orderKeys.OrderId = Orders.OrderId
JOIN dbo.OrderStatus WITH(NOLOCK)
ON OrderStatus.OrderStatusId = Orders.OrderStatusID
WHERE SERVICEPROVIDERID = 1
AND CREATEDATE >= '01/21/2013 15:27:00'
AND CREATEDATE <= '01/23/2014 15:27:00'
AND (Orders.OrderID LIKE '%' AND _orderKeys.OrderKey LIKE '%')
AND _orderKeys.CustomerKey LIKE '4289581'
AND _orderKeys.Source LIKE '%'
ORDER BY CreateDate
查询获取较少数量的记录: -
SELECT Orders.OrderId, Orders.Action, OrderKey,_orderKeys.CustomerKey
,_orderKeys.Source, Orders.OrderStatusId, ErrorCode, ErrorDescription
, ServiceProviderID, ReprocessCount, EffectiveDate, CreateDate
, LastModifiedDate, SourceName, OrderStatus.StatusName as OrderStatusName
,OrderXML
FROM dbo.OrdersArchive Orders WITH(NOLOCK) JOIN dbo.OrderKeys _orderKeys WITH(NOLOCK)
ON _orderKeys.OrderId = Orders.OrderId JOIN dbo.OrderStatus WITH(NOLOCK)
ON OrderStatus.OrderStatusId = Orders.OrderStatusID
WHERE SERVICEPROVIDERID = 1
AND CREATEDATE >= '2014/01/21 15:27:00'
AND CREATEDATE <= '2014/01/23 15:27:00'
AND (Orders.OrderID LIKE '%' AND _orderKeys.OrderKey LIKE '%')
AND _orderKeys.CustomerKey LIKE '4289581'
AND _orderKeys.Source LIKE '%'
ORDER BY CreateDate
如果你看,当我选择1年的记录时查询要快得多,但是当我选择2天的记录时,查询速度很慢。有人可以协助我为什么看到执行时间的差异
由于