相同查询花费更多时间来获取更少的记录,更少的时间来获取更多记录

时间:2014-01-22 23:26:10

标签: sql-server

我有一个查询,它在获取更少记录时花费更多时间,但在获取更多记录时花费的时间更少。

查询获取更多记录: -

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天的记录时,查询速度很慢。有人可以协助我为什么看到执行时间的差异

由于

0 个答案:

没有答案