Først kan du prøve at tilføje indekser til felterne ProgramName og CustID, hvis du ikke allerede har dem.
De-Duping
Du kan gruppere dine optegnelser for at identificere duper, og mens du gør det, kan du få fat i den mindste ID-værdi for hver gruppe. Derefter skal du bare slette alle poster, hvis ID ikke er et af MinID'erne.
In-Clause Method
delete from
ProgramsList
where
id not in
(select min(id) as MinID
from ProgramsList
group by ProgramName, CustID)
Join-Method
Du skal muligvis køre dette mere end én gang, hvis der er mange medlemmer pr. gruppe.
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
Nogle mennesker har præstationsproblemer med In-Clause, andre har ikke. Det afhænger meget af dine indekser og sådan. Hvis den ene er for langsom, så prøv den anden.
Relateret:https://stackoverflow.com/a/4192849/127880