我已經創建了一個存儲過程,用於從不同dbs中的幾個不同表中選擇要在臨時表中使用的臨時表。填滿桌子似乎一切正常。我嘗試加入他們時出現問題。這是我寫的查詢:SQL查詢不會停止執行
SELECT #temp1.id,
#temp2.first_name,
#temp2.last_name,
#temp3.DOB,
#temp4.Sex,
#temp5.SSN
FROM (((#temp1
LEFT JOIN #temp3 ON #temp1.id = #temp3.id)
LEFT JOIN #temp4 ON #temp1.id = #temp4.id)
LEFT JOIN #temp2 ON #temp1.id = #temp2.id)
LEFT JOIN #temp5 ON #temp1.id = #temp5.id;
查詢在一定程度上起作用。輸出窗口填充了選擇的結果。問題是查詢不會退出。它會停止向輸出添加新記錄,但會繼續執行,因此過程會掛起,因爲它無法移到下一個語句。有任何想法嗎?
嘗試一次運行一個連接,並確定某個特定連接是否導致它掛起。您是否可以驗證應該返回的所有記錄是否在「掛起」時返回?每個表中有多少條記錄? ID在所有表上都是唯一的嗎?如果有重複,返回的記錄數可能非常大。有了這些問題的答案,這裏的人們可能會更容易幫助你。列名稱和類型也會有幫助。 –
你是什麼意思查詢不退出?如果查詢未完成,則可能表示查詢中出現問題。 –
你看過實際執行計劃嗎?你可以嘗試的另一件事是重新編譯存儲過程。有時,如果數據庫對其數據或結構進行重大更改,則重新編譯過程會更新並優化該過程針對這些更改的查詢計劃。這可以提高過程的處理性能。 –