Обновление Mysql занимает слишком много времени - PullRequest
0 голосов
/ 12 ноября 2010

У меня есть оператор обновления Mysql, и он выполняется слишком долго - 52 сек

update table_ea ea, table_a a 
  set ea.match_creator='S', a.match_state=N 
  where 
    ea.source_id=a.asset_id and 
    ea.source_name='S' and 
    ea.match_creator='S'  and  
    ea.entity_id like 'S'

Вопрос:

a) Можем ли мы сделать объяснение этого оператора обновления в Mysql, как мы делаем для операторов Select?
б) Любые предложения о том, как минимизировать время обновления ..

Ответы [ 2 ]

1 голос
/ 12 ноября 2010

Посмотрите, как выполняется соответствующий оператор выбора. Возможно, вам не хватает индекса.

Вам нужно будет опубликовать информацию о таблице, если вы хотите, чтобы мы проверили.

Попробуйте опубликовать SHOW CREATE TABLE table_ea и SHOW CREATE TABLE table_a

EXPLAIN SELECT ea.match_creator, a.match_state 
FROM table_ea ea, table_a a 
WHERE ea.source_id=a.asset_id 
AND ea.source_name='S' 
AND ea.match_creator='S' 
AND ea.entity_id like 'S'`
0 голосов
/ 12 ноября 2010

Вы должны создать индексы для следующих полей таблиц, чтобы сделать это быстрее (это ускоряет объединения):

ea.source_id

a.asset_id

ea.source_name

ea.match_creator

ea.entity_id

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

...