首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

百萬筆資料也能秒刪:SQL Server 高效去除重複記錄實戰

     編輯:關於SqlServer

當資料表達到百萬筆以上,使用游標逐行檢查刪除重複記錄不僅效能極差,更是開發人員的噩夢。本文介紹一種無需游標、僅需四步驟的高效解法,利用唯一索引特性快速去重。

情境說明

假設有一產品資訊表 Products,結構如下:

CREATE TABLE Products (
  ProductID int,
  ProductName nvarchar(40),
  Unit char(2),
  UnitPrice money
)

表中 Chang 與 Tofu 兩筆產品存在重複記錄,需刪除重複、保留單筆。

四步驟去重法

第一步:建立相同結構的暫存表

CREATE TABLE Products_temp (
  ProductID int,
  ProductName nvarchar(40),
  Unit char(2),
  UnitPrice money
)

第二步:於暫存表建立唯一索引並忽略重複值

在企業管理器中對 Products_temp 右鍵 → 所有工作 → 管理索引 → 新增,勾選「忽略重複值」與「唯一」選項,或以 T-SQL 建立:

CREATE UNIQUE INDEX IX_Products_temp_Unique
ON Products_temp (ProductName, Unit, UnitPrice)
WITH IGNORE_DUP_KEY

第三步:將資料複製至暫存表

INSERT INTO Products_temp SELECT * FROM Products

執行後會提示「已忽略重複的鍵」,暫存表即無重複列。

第四步:清空原表並導入去重後資料

DELETE FROM Products
INSERT INTO Products SELECT * FROM Products_temp
DROP TABLE Products_temp

優勢總結

  • 無論資料量多大,執行速度極快
  • 幾乎不需撰寫複雜程式碼,安全可靠
  • 利用資料庫引擎原生索引機制,避免游標效能瓶頸

小提醒: 唯一索引的欄位選擇決定何為「重複」,操作前務必確認索引欄位正確,避免誤刪有效資料。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved