これは冒険でした。前の質問にあるループ重複クエリから始めましたが、各ループは1,700 万レコードすべてを超えるため、数週間かかります(MSSQL 2005 を使用してサーバーを実行するだけで*select count * from MyTable*
4:30 分かかります)。私はこのサイトとこの投稿から情報を集めました。
そして、以下のクエリに到達しました。問題は、これがどのタイプのパフォーマンスでも 1,700 万件のレコードに対して実行する正しいタイプのクエリであるかということです。そうでない場合、何ですか?
SQL クエリ:
DELETE tl_acxiomimport.dbo.tblacxiomlistings
WHERE RecordID in
(SELECT RecordID
FROM tl_acxiomimport.dbo.tblacxiomlistings
EXCEPT
SELECT RecordID
FROM (
SELECT RecordID, Rank() over (Partition BY BusinessName, latitude, longitude, Phone ORDER BY webaddress DESC, caption1 DESC, caption2 DESC ) AS Rank
FROM tl_acxiomimport.dbo.tblacxiomlistings
) al WHERE Rank = 1)