MySQL UPDATE статус из другой таблицы - PullRequest
0 голосов
/ 20 мая 2011

У меня есть таблица статей с довольно небольшим объемом данных (25 тыс. Строк).В таблице есть опубликованный столбец (логическое значение), который необходимо обновить в зависимости от состояния данных из внешнего канала.

Сначала я установил значение = 0 во всех статьях.Затем я загружаю данные фида во временную таблицу просто с идентификатором статьи и опубликовал = 1. Я хочу вернуть опубликованному статусу 1 из всех статей, у которых есть идентификатор в временной таблице (временная таблица содержит только опубликованные статьи- по умолчанию, если его нет в ленте, он должен быть неопубликован).

Сейчас я использую это:

UPDATE articles a
LEFT JOIN data_temp b
ON a.id = b.id
SET a.published = 1
WHERE b.id IS NOT null

Это работает, но очень медленно (как 200 секунд медленно на моем сервере разработки).Кажется, должен быть способ сделать это очень быстро.Спасибо за помощь.

Ответы [ 2 ]

2 голосов
/ 20 мая 2011

Есть ли у вас индексы в двух столбцах идентификаторов двух таблиц? Если нет, это может потенциально ускорить объединение.

0 голосов
/ 20 мая 2011
UPDATE articles SET published = 1 WHERE id IN (SELECT id FROM data_temp)

Поскольку он кэширует результат подзапроса, он должен быть довольно быстрым ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...