2016-07-26 108 views
-1

我們有一個SQL Server 2012數據庫,包含多個表和記錄,基本上我們正面臨着SQL查詢在兩個相同SQL查詢的表上的問題。第一個SQL查詢執行時間較少,第二個SQL查詢執行速度很慢。SQL Server查詢問題

我不知道爲什麼有人會幫我解決這個問題? 我們兩個查詢給出如下....

首先查詢(取這麼多的時間來執行):

SELECT * FROM (SELECT TOP 10 TrackerResponse.EventName,TrackerResponse.ReceiveTime,ISNull(TrackerResponse.InputStatus,0) AS InputStatus, 
       TrackerResponse.Latitude,TrackerResponse.Longitude,TrackerResponse.Speed, 
       TrackerResponse.TrackerID,TrackerResponse.OdoMeter,TrackerResponse.Direction, 
       UserCar.CarNo FROM TrackerResponse 
       INNER JOIN UserCar ON (UserCar.TrackerID = TrackerResponse.TrackerID) 
       WHERE (TrackerResponse.EventName IS NOT NULL AND TrackerResponse.EventName<>'') 
       AND TrackerResponse.TrackerID = 112 Order By ID DESC) AS Events) 

第二個查詢(少取執行時間):

SELECT * FROM (SELECT TOP 10 TrackerResponse.EventName,TrackerResponse.ReceiveTime,ISNull(TrackerResponse.InputStatus,0) AS InputStatus, 
       TrackerResponse.Latitude,TrackerResponse.Longitude,TrackerResponse.Speed, 
       TrackerResponse.TrackerID,TrackerResponse.OdoMeter,TrackerResponse.Direction, 
       UserCar.CarNo FROM TrackerResponse 
       INNER JOIN UserCar ON (UserCar.TrackerID = TrackerResponse.TrackerID) 
       WHERE (TrackerResponse.EventName IS NOT NULL AND TrackerResponse.EventName<>'') 
       AND TrackerResponse.TrackerID = 56 Order By ID DESC) AS Events 
+0

檢查這兩個查詢執行計劃的決議。你是否缺少任何索引?每種情況下有多少行符合標準?如果'TrackerID = 46'返回比112多100倍的行,並且您沒有任何索引,則查詢可能會多花費100倍。發佈兩個查詢的執行計劃 –

回答

0

我看到這兩個查詢都類似,跟蹤器ID ..例外,我最好的猜測是,這個查詢可能是受害者Parameter sniffing ..

嘗試使用選項(重新編譯)像下面來看看這是否是原因,並按照文章中提到以上鍊接,

SELECT * FROM (SELECT TOP 10 TrackerResponse.EventName,TrackerResponse.ReceiveTime,ISNull(TrackerResponse.InputStatus,0) AS InputStatus, 
       TrackerResponse.Latitude,TrackerResponse.Longitude,TrackerResponse.Speed, 
       TrackerResponse.TrackerID,TrackerResponse.OdoMeter,TrackerResponse.Direction, 
       UserCar.CarNo FROM TrackerResponse 
       INNER JOIN UserCar ON (UserCar.TrackerID = TrackerResponse.TrackerID) 
       WHERE (TrackerResponse.EventName IS NOT NULL AND TrackerResponse.EventName<>'') 
       AND TrackerResponse.TrackerID = 56 Order By ID DESC 
option(recompile) 
AS Events) 
+0

您確定它與參數嗅探有關的所有問題.. ??? –

+0

您可以通過查看執行計劃並檢查預期行與實際行來確認 – TheGameiswar

+0

使用選項(重新編譯)並且查詢比先前執行時間短6秒 –