Этот запрос, вероятно, выполняется так же быстро, как и при условии, что у вас есть индексированные столбцы clicks.user_id и users.id.
Одна вещь, которую я могу себе представить, - это ответственность за большую медлительностькоторый является предложением ORDER BY.Видя, что это агрегированное поле, ему, вероятно, придется сначала получить все данные, а затем отсортировать их без особой оптимизации.Сортировка является хорошим кандидатом, когда что-то идет медленно.
Другая идея состоит в том, чтобы сохранить отдельную таблицу, которая содержит общее количество кликов.Если вам нужны эти записи, то вам может потребоваться выполнить 2 запроса за клик ... один для существующей таблицы, а другой для обновления таблицы user / click, которая будет иметь только user_id и click_count плюс все, что вы думаетеявляется целесообразным.Таким образом, SELECT должны стать молниеносными даже для большого количества пользователей, потому что вы извлекаете только минимально необходимое количество строк, а не целую кучу из них, которые в любом случае только агрегируются.