Как оптимизировать сложный запрос на нагруженной базе MYSQL?
Так как из второй таблицы данные не выбираются - попробуйте (NOT EXISTS):
SELECT 
  task.id, 
  task.dc, 
  task.provider, 
  task.type, 
  task.url, 
  task.cost, 
  task.cost_bot, 
  task.last_start_msec, 
  task.url_id, 
  task.remains, 
  task.cat 
FROM 
  Task task 
WHERE 
  task.status = 'active' 
  AND task.type = 'follow_profile' 
  AND task.provider = 'insta' 
  AND task.cat = 3 
  AND NOT EXISTS(
	SELECT 1 FROM  TaskFlow flow 
	WHERE 
		flow.url_id = task.url_id 
		AND flow.executor_acc_id = $acc 
  );
если update запросов на порядок меньше чем запросов на select, то типовой способ ускорения последних за счет замедления update - исполнение запросов select заранее, складывая их результат в специальную табличку тригерами

так же хорошим подходом является кеширование результатов на бакэнде, не важно как, главное в оперативной памяти, и инвалидировать кеш на update-ах.

p.s. сразу бросаются хранение типов и статусов в строках, переделай в числа, должно заметно уменьшить базы данных, уменьшить объем базы и индексов.
лучше всего enum