1. 程式人生 > >MSSQL 記一次刪除數據特別慢

MSSQL 記一次刪除數據特別慢

刪除 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 Where
BaseID = @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 記一次刪除數據特別慢