Документация MySQL содержит раздел по ORDER BY
оптимизации , в котором в самом верху есть маркированный список вещей, которые нужно проверить, когда производительность не соответствует вашим ожиданиям.Итак, первым делом можно пройти через этот список.
Многие из них мы можем исключить на основании предоставленной вами информации, но многие из них связаны с вещами, которые мы не знаем из вашего вопроса, но которые вы, вероятно, знаете.
Если это не поможет, выполните оба запроса через EXPLAIN
, и это может сказать вам, почему производительность одного отличается от другого.
Я был бы склонен посмотреть, что произойдет, если вы измените ON r.user_id = c.user_id
во втором запросе на ON c.user_id = r.user_id
, основываясь на битах в документации, указанной выше, где говорится о ситуации, когда "[t] онКлюч, используемый для извлечения строк, не совпадает с ключом, используемым в ORDER BY ".