確定從一個表更新一列,我是新來的SQLite和已經這樣做了成功使用以下查詢:的SQLite使用另一個表
UPDATE stuff
SET UserName = (SELECT UserName FROM Temp_Stuff WHERE Temp_Stuff.EmpID = stuff.EmployeeID
這個偉大的工程,當stuff
有4995行,Temp_Stuff
有1814行並在大約2秒內執行。
當我嘗試當stuff
有60000行,Temp_Stuff
有55000行,則此完全相同的查詢,似乎在查詢過程中鎖定並不會處理任何事情(我等了20多分鐘。)
我使用vb.net來實現這一點,並且將ExecuteNonQuery方法包裝在一個事務中,並且如果發生任何錯誤,我會回滾事務(我沒有達到這一點。)有沒有一種更有效的方式在SQLite中實現這一點?我試圖並意識到在Update語句中不允許連接,所以這個想法被拋出。這似乎是一個SQLite特定的問題。
* 查詢計劃: *
0 0 0 SCAN TABLE stuff(~1000000 rows)
0 0 0 EXECUTE CORRELATED SCALAR SUBQUERY 0
0 0 0 SCAN TABLE Temp_Stuff(~100000 rows)
你可以'解釋查詢計劃...'爲您的聲明和添加到您的問題? – paul 2013-03-15 16:30:27
@MahmoudGamal沒有 - 你不能用'join'使用SqlLite'更新' – paul 2013-03-15 16:32:15
@MahmoudGamal我在我的帖子中說我試過了(是一個SQLite newby)並且沒有成功。 – 2013-03-15 16:33:20