Първо, може да опитате да добавите индекси към полетата ProgramName и CustID, ако все още нямате такива.
Дупинг
Можете да групирате вашите записи, за да идентифицирате измамници и докато правите това, вземете стойността на min ID за всяка група. След това просто изтрийте всички записи, чиито ID не е един от MinID.
Метод в клауза
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