私は繰り返しコードを持つテーブルを持っていますが、テーブルをきれいにする必要があります。テーブルから繰返しIDを削除する - パフォーマンス改善
私のテーブルにはこれです:私はこれを持っている(ちょうど少なくとも一つを持っているために、残された行は関係ありません)
FriendlyFunctionCode MemberFirmId FunctionLevel3Desc
1 Value1 Value2
2 Value4 Value5
:私はこのようなものが必要
FriendlyFunctionCode MemberFirmId FunctionLevel3Desc
1 Value1 Value2
1 Value2 Value3
2 Value4 Value5
クエリが、パフォーマンスはひどいです
SELECT MemberFirmId, FriendlyFunctionCode
INTO #ToDeleteRepeated
FROM [dbo].[FirmFunction]
GROUP BY MemberFirmId, FriendlyFunctionCode
HAVING COUNT(1) > 1
DECLARE @Code VARCHAR(100), @Desc VARCHAR(250)
WHILE ((SELECT COUNT(1) FROM #ToDeleteRepeated) > 0)
BEGIN
SELECT TOP 1 @Code = FriendlyFunctionCode FROM #ToDeleteRepeated
WHILE ((SELECT COUNT(1) FROM [FirmFunction] WHERE FriendlyFunctionCode = @Code) > 0)
BEGIN
SELECT TOP 1 @Desc = FunctionLevel3Desc FROM [FirmFunction] WHERE FriendlyFunctionCode = @Code
DELETE FROM [FirmFunction] WHERE FriendlyFunctionCode = @Code AND FunctionLevel3Desc = @Desc
END
END
ご意見はありますか?
単一のスキャンでより速く実行しますFriendlyFunctionCodeに関連した異なる値?あなたの質問はそうしないことを示唆しています。実際には、FunctionLevel3Descも繰り返されると、クエリによって複数のレコードが削除されることに注意してください。 – Matt