Как и везде в сложных системах нужно уметь мыслить не отдельными детальками, а функциональными блоками, и уметь выделять их в схеме.
Тут хорошо бы пример, ну да раз вопрос неконкретный - то и ответ будет без примера )
Как мне теперь убедится в том, что мой алгоритм действительно выполняется за время O(n)?
Так и убедиться:
Счетчик - n сложений
Проход по счетчику - константа (65тыс значений)
Выкладывание отсортированных чисел - n присваиваний
---------
Итого O(n)
Сопоставь сообшение об ошибке со своим запросом: ты дважды обращаешься к таблице , и бд не может разобрать, что и в каком порядке джойнить.
Надо назначить таблице псевдонимы, напр users AS gamers и users AS moderators, и радоваться.