Sql-Server
刪除 SQL 表中超過 50K 條記錄
我們在一個 SQL 表中有 500k 條記錄。下面是表結構
UserID varchar FirstName varchar LastName varchar Address varchar
我們需要刪除該表中的 50K 記錄。我們嘗試了以下方法
**方法 1:**這有 50K DELETE 語句,大約需要 40 分鐘
DELETE FROM [dbo].[Table] WHERE UserID = 'tom345' DELETE FROM [dbo].[Table] WHERE UserID = 'john45'
依此類推,直到 50K DELETE 語句
**方法 2:**這包含 IN 語句中的所有 50K 使用者 ID,但需要超過 40 分鐘
DELETE FROM [dbo].[Table] WHERE UserID IN ( 'tom345', 'john45', .... )
有沒有其他方法相對需要更少的時間?
創建一個臨時表,放入您的使用者並在您的刪除語句中使用它:
CREATE TABLE delete_users (user_id ... primary key); INSERT INTO delete_users (user_id) values (...),(...)...; DELETE FROM [dbo].[Table] x WHERE EXISTS ( SELECT 1 FROM delete_users y WHERE x.user_id = y.user_id ); DROP TABLE delete_users;