Ten eerste kunt u proberen indexen toe te voegen aan de velden ProgramName en CustID als u deze nog niet heeft.
De-duping
Je kunt je records groeperen om dupes te identificeren, en terwijl je dat doet, pak je de min ID-waarde voor elke groep. Verwijder vervolgens alle records waarvan de ID niet een van de MinID's is.
In-Claus-methode
delete from
ProgramsList
where
id not in
(select min(id) as MinID
from ProgramsList
group by ProgramName, CustID)
Join-Methode
Het kan zijn dat u dit meer dan eens moet uitvoeren, als er veel leden per groep zijn.
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
Sommige mensen hebben prestatieproblemen met de In-Clause, andere niet. Het hangt sterk af van uw indexen en dergelijke. Als de ene te traag is, probeer dan de andere.
Gerelateerd:https://stackoverflow.com/a/4192849/127880