まず、ProgramNameフィールドとCustIDフィールドにまだインデックスがない場合は、それらにインデックスを追加してみてください。
重複排除
レコードをグループ化して重複を識別することができます。その際、各グループの最小ID値を取得します。次に、IDがMinIDの1つではないすべてのレコードを削除します。
条項内の方法
delete from
ProgramsList
where
id not in
(select min(id) as MinID
from ProgramsList
group by ProgramName, CustID)
結合方法
グループごとに多数のメンバーがいる場合は、これを複数回実行する必要がある場合があります。
DELETE P
FROM ProgramsList as P
INNER JOIN
(select count(*) as Count, max(id) as MaxID
from ProgramsList
group by ProgramName, CustID) as A on A.MaxID = P.id
WHERE A.Count >= 2
In-Clauseでパフォーマンスの問題を抱えている人もいれば、そうでない人もいます。それはあなたのインデックスなどに大きく依存します。一方が遅すぎる場合は、もう一方を試してください。
関連: https://stackoverflow.com/a/4192849/127880