2012-05-18 68 views
0

我有一個簡單的SQL調用,比如: -SQL Server 2008的超時過期錯誤

select col1,col2 from table1 

,有時系統運行如下: -

update table1 
set col3 = 'something' 
where col1 ='s1' and col2 ='s2' 

這些查詢都是通過運行各種應用程序運行我們的服務器,它只發生在一個有100k行的桌子上。

我有幾百萬行的表 - 它不超時,但不知道爲什麼它在這一行。

這些查詢運行一整天,沒有任何問題,但有時白天 - 特別是在高峯時段 - 他們失敗,錯​​誤 - 超時過期 -

能否請你告訴我,我可以嘗試解決此錯誤是什麼東西

我需要執行某種類型的鎖定嗎?

同樣,如果用戶正在更新評論,然後系統上的其他用戶嘗試更新表中的同一行 - 是否超時第二個用戶,因爲該行被鎖定以進行編輯 - 是否有解決方法?

+0

你有在col1和col2上的指數? –

+0

你是指什麼意思? - 你是說如果它是主鍵? – Jatin

+0

是的 - 就像主鍵 - 你可能需要col1和col2上的複合索引(多於一列的索引),這可能有助於你的UPDATE查詢。 –

回答

2

我找到了答案 - 因爲它是舊系統中的一個表 - 以前的用戶沒有添加主鍵,認爲在那裏已經有一個虛擬主鍵,但它不正確。

由於sql編輯時間過長,會超時。

所以我只是在表中做了一個複合鍵,現在它工作正常。

結論 - 從未有一個表沒有主鍵,如果你將要處理更新,刪除數據

謝謝大家對您的意見

+0

*結論 - 永遠不要有沒有主鍵的表*永遠不要提供無條件的建議。 –

+0

謝謝我做了一個編輯 - 我覺得現在聽起來好多了 – Jatin