Первый запрос будет эффективно выполнять перекрестное соединение перед обновлением, что является ужасной производительностью.
Второй запрос будет выполнять этот подзапрос для каждой строки во внешней таблице, что очень плохо с точки зрения производительности.
Ни то, ни другое не особенно хорошо ... только вопрос, который хуже.:)
Вы хотите обновить всю таблицу items
?
Вы пытались найти @ 1012 * s эквивалентных SELECT
s двух запросов?
EXPLAIN
SELECT items.brand_id, brands.id
FROM items, brands
WHERE brands.name = 'apple'
и
EXPLAIN
SELECT brand_id, id
FROM items, (SELECT id FROM brands WHERE name = 'apple') a
Еще лучше, запустите UPDATE
с / эквивалентные SELECTS
с и выполните несколько SHOW STATUS LIKE 'handler_%'
, чтобы точно узнать, сколько строк читается /написано.