исключить много пользователей в MySQL - PullRequest
1 голос
/ 02 декабря 2010

заранее большое спасибо за помощь.Я должен исключить пользователей, проблема в том, что это занимает слишком много времени (около 5 часов и более). В моей базе данных у меня около 800 000 пользователей, из которых я исключаю около 580000 пользователей (я получаю 220000 пользователей, которые не являютсяповторяется).

  1. , чтобы сделать это первым методом:

SELECT iduser FROM userstotal WHERE iduser NOT IN( SELECT iduser FROM users220000)

(Это упрощенный пример того, что я делаю, но этоидея) Это займет около 5 часов или более для выполнения запроса.

Я думал о сценарии php, чтобы добавить в массив пользователей, а затем перейти исключая повторных.

Что вы мне посоветуетеоптимизировать SQL-запрос или какой-то оптимальный метод для этого.

  • Для справки используйте MyISAM

1 Ответ

1 голос
/ 02 декабря 2010

Я бы переписал запрос как

SELECT   ut.iduser
FROM     userstotal ut
WHERE    NOT EXISTS (
           SELECT  u2.iduser 
           FROM    users220000 u2 
           WHERE   u2.iduser = ut.iduser
         )

и убедитесь, что iduser таблицы userstotal проиндексировано .

Я сомневаюсь, что индекс для пользователей 220000 будет иметь какое-либо значение, но это также не повредит.

редактировать

Спасибо Роннису за то, что он нашел пропущенное предложение.

...