MSSQL 記一次刪除數據特別慢
阿新 • • 發佈:2018-06-14
刪除 char pan name sel 刪除數據 pri sta key
x
["Table閃亮登場"]
主表:Base(BaseID Int,BaseName Nvarchar(200)) 關系表:BaseForUser(BaseForUserID Int,BaseID Int)
["一些描述“]
要刪除BaseID為1數據,當然BaseForUser中BaseID為1的數據也要刪除...
(並且要刪除的數據還不多,Base表一條數據,BaseForUser表中10條數據左右)
But BaseForUser中數據比較多(客戶比較多,你懂得),一億多...
["第一個版本"]
Declare @BaseID Int = 1 Delete From BaseForUser WhereBaseID = @BaseID Delete From Base Where BaseID = @BaseID --耗時 1分鐘多...Pass
["第2個版本"]
第二個版本: Delete Base From (Select BaseID From BaseForUser Where BaseID = @BaseID) U Where Base.BaseID = U.BaseID --耗時50s...Pass
["第③個版本"]
--確定範圍 Declare @User Table(BaseForUserID Int Primary Key) Insert Into@User Select T.ClassTableGenerateForStudentID From BaseForUser U With(NoLock) Where U.BaseID = @BaseID Delete From BaseForUser Where BaseForUserID Between ( Select Min(BaseForUserID) From @User ) And ( Select Max(BaseForUserID) From @User ) And BaseID = @BaseID
--耗時10s,好吧,先這樣吧...-_-||
x
MSSQL 記一次刪除數據特別慢