2013-09-26 91 views
1

在我目前的項目,我們有一個非常奇怪的問題與我們的SQL服務器數據庫選擇查詢。選擇查詢永遠不會完成第一次,然後當重新運行立即完成

我們第一次運行查詢後,部署它永遠不會結束。然後,如果我們停止查詢並重新運行它,它會立即結束。

當我們第一次發出查詢時,我們沒有別的東西在運行,所以我看不出它是如何與死鎖相關的。

有沒有人有任何想法,爲什麼會發生這種情況?

下面是該查詢以供參考:

SELECT KontoplanKommuneAar.fk_kontoplankommune_id_kontoplankommune, 
     KontoplanKommuneAar.kontoplankommuneaarid, 
     KontoplanKommuneAar.fk_kontoplanindividuel_id_kontoplanindividuel, 
     KontoplanKommuneAar.sys_kommuneid, 
     KontoplanKommuneAar.sys_extractdate, 
     KontoplanKommuneAar.sys_batchdate 
FROM (SELECT kka.fk_kontoplankommune_id_kontoplankommune, 
       kka.kontoplankommuneaarid, 
       kka.fk_kontoplanindividuel_id_kontoplanindividuel, 
       kka.sys_kommuneid, 
       kka.sys_batchdate, 
       kka.sys_rowid, 
       kka.sys_extractdate 
     FROM edw.dbo.kontoplankommuneaar kka 
     WHERE kka.kontoplankommuneaarid != -1 
       AND (kka.kontoplankommuneaarid IN (SELECT 
          fk_kontoplankommuneaar_id_kontoplankommuneaar 
                FROM 
        kontoplanposteringsummaaned) 
         OR kka.kontoplankommuneaarid IN (SELECT 
         fk_kontoplankommuneaar_id_kontoplankommuneaar 
                 FROM 
         kontoplanbudgetvedtaget) 
         OR kka.kontoplankommuneaarid IN (SELECT 
         fk_kontoplankommuneaar_id_kontoplankommuneaar 
                 FROM 
         kontoplankorrigeringbudget))) KontoplanKommuneAar 
ORDER BY KontoplanKommuneAar.fk_kontoplankommune_id_kontoplankommune 
+0

您應該使用聯接在查詢中。這樣會更容易閱讀......不是因爲性能而這樣說 –

+0

您是否也可以共享所涉及的表的模式?也許是一個小提琴(http://sqlfiddle.com/)? –

回答

0

嘗試這一個 -

SELECT kka.fk_kontoplankommune_id_kontoplankommune 
    , kka.kontoplankommuneaarid 
    , kka.fk_kontoplanindividuel_id_kontoplanindividuel 
    , kka.sys_kommuneid 
    , kka.sys_batchdate 
    , kka.sys_extractdate 
FROM dbo.kontoplankommuneaar kka 
WHERE kka.kontoplankommuneaarid != -1 
    AND kka.kontoplankommuneaarid IN 
    (
     SELECT fk_kontoplankommuneaar_id_kontoplankommuneaar 
     FROM dbo.kontoplanposteringsummaaned 

     UNION 

     SELECT fk_kontoplankommuneaar_id_kontoplankommuneaar 
     FROM dbo.kontoplanbudgetvedtaget 

     UNION 

     SELECT fk_kontoplankommuneaar_id_kontoplankommuneaar 
     FROM dbo.kontoplankorrigeringbudget 
    ) 
ORDER BY kka.fk_kontoplankommune_id_kontoplankommune 
+0

我們已經嘗試構建內部選擇作爲一個聯合,它有相同的結果。 –

+0

請提供您的執行計劃。 – Devart

+0

明天當我不能再工作時,我可以給我執行計劃:) 我主要關心爲什麼會發生這種情況。在什麼情況下它有助於運行並重新運行它? –