Какой запрос на самом деле занимает большую часть времени? Держу пари, это третий.
Оцените ваш запрос, преобразовав его в SELECT:
SELECT a.rank, b.rank
FROM users a, userRankings b
WHERE a.id = b.userid
Объясните может помочь вам отладить, как используются индексы.
Первое, что вы должны сделать, это отбросить тот старый синтаксис table1, table2. Это трудно читать и может быть очень неэффективно. Вы всегда должны использовать JOIN.
UPDATE users AS a
JOIN userRankings AS b ON a.id = b.userid
SET a.rank = b.rank
Это может решить вашу проблему прямо здесь - надеюсь, EXPLAIN поможет вам сузить круг вопросов. Убедитесь, что оба столбца (users.id и userRankings.userid) имеют одинаковый тип (например, один из них не подписан, а другой -, например).
Для получения дополнительной справки вам потребуется опубликовать больше данных (результаты SHOW CREATE TABLE для каждой таблицы, сколько времени занимает каждый запрос при их запуске, количество строк в таблицах).