Po pierwsze, możesz spróbować dodać indeksy do pól ProgramName i CustID, jeśli jeszcze ich nie masz.
Usuwanie duplikatów
Możesz grupować swoje rekordy, aby zidentyfikować duplikatów, a gdy to robisz, pobierz wartość minimalnego identyfikatora dla każdej grupy. Następnie po prostu usuń wszystkie rekordy, których identyfikator nie jest jednym z MiniID.
Metoda klauzuli
delete from
ProgramsList
where
id not in
(select min(id) as MinID
from ProgramsList
group by ProgramName, CustID)
Metoda łączenia
Być może będziesz musiał uruchomić to więcej niż raz, jeśli w grupie jest wielu członków.
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
Niektórzy ludzie mają problemy z wydajnością klauzuli, inni nie. To zależy w dużej mierze od twoich indeksów i tak dalej. Jeśli jedno jest zbyt wolne, wypróbuj drugie.
Powiązane:https://stackoverflow.com/a/4192849/127880