Nejprve můžete zkusit přidat indexy do polí ProgramName a CustID, pokud je ještě nemáte.
Odstranění duplikace
Své záznamy můžete seskupit, abyste identifikovali podvodníky, a při tom si pro každou skupinu vezměte minimální hodnotu ID. Poté stačí odstranit všechny záznamy, jejichž ID není jedním z MinID.
Metoda doložky
delete from
ProgramsList
where
id not in
(select min(id) as MinID
from ProgramsList
group by ProgramName, CustID)
Metoda připojení
Pokud je ve skupině mnoho členů, možná to budete muset spustit více než jednou.
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
Někteří lidé mají problémy s výkonem s In-Clause, někteří ne. Hodně záleží na vašich indexech a podobně. Pokud je jeden příliš pomalý, zkuste druhý.
Související:https://stackoverflow.com/a/4192849/127880