У меня есть 2 таблицы MySQL: список терминов и черный список. У них обоих есть индекс в поле «термин», а в «черном списке» есть еще один индекс в поле «статус».Как избежать полного сканирования таблицы при обновлении с предложением IN в MySQL
Я хочу, чтобы обновить статус терминов в termlist, которые также появляются в черный список со статусом как «A», к «B», я выполняю этот SQL заявление:
update termlist set status = 'B' where term in (select term from blacklist where status = 'A')
Это вызывает полное сканирование таблицы в списке терминов. Я хочу использовать «update with inner join», но я не могу, так как в предложении select есть предложение where.
Я знаю, что могу создать временную таблицу из этого оператора select, а затем обновить внутреннее соединение с этой временной таблицей, но это довольно утомительно, если я хочу сделать это обновление много раз.
Есть ли одна инструкция по обновлению, которая может выполнять работу без полного сканирования таблицы?
таблица схемы показывает индекс информация не рука наберется пожалуйста, 'показать создать таблицу xxx' для каждого – Drew
, если это даже необходимо ... так пропустить то, что я только что сказал ... Вы хотите использовать обновление с шаблоном объединения таблиц, см. [Здесь] (http://stackoverflow.com/questions/15209414/mysql-update-join) – Drew