Так пробовать плохо и неверно. Начиная от count(1) вместо count(*) что заставляет оптимизатор забыть про индексы и продолжая общим подходом.
Сделать группировку, отсортировать и top 1 взять из нее. А вы чего делаете? Почему всего два раза выполняем один и тот же запрос? Как-то несерьезно, надо больше.
Артём Каретников, все как раз наоборот count(1) не делает лишних заходов в таблицу в отличие от count(*). А top 1 вообще не решает задачу, т.к. может быть несколько пользователей с одинаковым количеством, а top 1 вернёт только первого. Насчёт индексов вообще спорно. В данном случае внутренний и внешний дата сеты могут быть соединены hash join, а это быстрее чем искать по индексу, т.к. поиск по индексу имеет сложность O(log(n)), а поиск по хеш-таблице O(1). Т.е.поиск по хешу не зависит от объема выборки, а поиск по индексу сильно зависит. Кроме этого поиск по индексу требует больше обращений к диску, если индекс не закеширован в памяти, а дисковые операции очень дорогие.
Вот так как-то. Но если не верите проведите эксперимент, сделайте оба варианта запроса и сравните их планы.