Я думаю, вы можете справиться с этим в одном запросе:
UPDATE campaign_event_detail_v2 d
LEFT JOIN campaign_notes n ON n.cid = d.call_recording_url
LEFT JOIN campaign_categories c ON c.cid = n.cid
SET d.note = n.note, d.category_id = c.category
WHERE d.call_recording_url != '' AND d.event_type_name = 'Call'
Я не на 100% уверен, что это правильная логика, насколько я понял. Я должен извиниться, если это не так. Но моя точка зрения такова: вы, вероятно, можете сделать все это одним запросом.
Вам, вероятно, следует добавить индексы в столбцы, такие как event_type_name
, category_id
и cid
, если их там еще нет. Это не повлияет на ваши сценарии, но выполнение займет некоторое время, в зависимости от того, сколько записей у вас есть в ваших таблицах.
Кроме того, вероятно, было бы лучше использовать триггеры вместо выполнения этого при каждом запросе.