Как оптимизировать SQL Server проверки удвоения - PullRequest
0 голосов
/ 18 сентября 2009

Я хотел бы оптимизировать мой Doublon, если кто-нибудь знает, как это может быть быстрее.

$doublonchecker="delete bad_rows.* from eMail as good_rows inner join eMail as bad_rows on bad_rows.EMAIL = good_rows.EMAIL and bad_rows.EMAIL_ID > good_rows.EMAIL_ID";
$resultdoublon = mysql_query($doublonchecker);
        if (!$resultdoublon) {
        die('Error : ' . mysql_error());
        }

Ответы [ 2 ]

2 голосов
/ 18 сентября 2009

Я обычно делаю это следующим образом:

Delete from Email where ID not in 
(
Select Min(em.ID) minID
from eMail em  group by em.Email
)
2 голосов
/ 18 сентября 2009

Этот запрос будет использовать индекс на (EMAIL) или (EMAIL, EMAIL_ID). Однако вам не нужно запускать этот запрос более одного раза, поэтому его производительность не должна вас сильно беспокоить. После того, как вы удалили «Дублоны», просто замените индекс на (EMAIL) на UNIQUE KEY на (EMAIL), и у вас никогда не будет повторяющихся электронных писем.

...