我已經繼承了一個表(300GB)充滿SQL數據類型Image
的數據庫。我知道這個數據類型是折舊的。查找二進制重複記錄SQL Server 2008(數據類型圖像)
作爲例行清理,我想從符合某些條件的表中刪除所有重複的Image
's。
如何有效比較使用SQL的二進制數據? =相等運算符是否足夠?
這裏有一個場景:
Table 'Paperwork'
int ID
int EmployeeID
int AnotherID
int AnotherFKID
image Attachment
我想找到其中Attachment
,EmployeeID
,AnotherID
和AnotherFKID
是相同的所有行。它需要在對數據庫影響最小的情況下完成,因爲有1,116,313行。
編輯
在SQL Server Image
數據類型不支持LIKE
或普通的比較操作符。
編輯
感謝@馬丁誰建議Image
被強制轉換爲VARBINARY。我已經加入到這個使用HASHBYTES
HASHBYTES('MD5',CAST(cast([Attachment] as varbinary(max))as varbinary)) AS AttachmentMD5
「EmployeeID」,「AnotherID」,「AnotherFKID」組合的平均數量是多少?即平均需要比較多少圖像? – 2011-05-18 22:33:42
這個月,3384.它是一個非常混亂的任務。數據可追溯到10年,可能是50%的重複數據。一個不好的數據輸入工具是怪罪。目前這些數據佔用了300GB的空間。 – Jeremy 2011-05-18 22:59:31
3384在每個「EmployeeID」,「AnotherID」,「AnotherFKID」組內嗎?在這種情況下,你可能會更好[計算校驗和](http://stackoverflow.com/questions/1240425/what-are-the-differences-between-checksum-and-binary-checksum-and-when-what- a)每次預先減少實際比較次數。您需要將'image'強制轉換爲'varbinary(max)'來檢查具有相同校驗和的相同性。 – 2011-05-18 23:02:59