есть таблица
members
id, name, maska
поля maska как счетчик каждый раз когда другие member нажимает на mask значние поля maska увеличивается.
Вопрос как выбрать 10 пользователей из таблицы у кого maska максимальная. Из всех записи. Записи в таблице больше 1 млн. Т.е мне надо 10 member'a из 1 млн.
atambalasi: Если по полю создан индекс, то перебора не будет, сервер просто пройдёт по индексу, сразу выбирая нужные строки.
Если индекса нет, то будет запущен полный перебор строк.
Rsa97: понятно спс. Еще один вопрос. Выбрали 10 юзера. Их позиция по набору maska от 1 до 10. Мне нужен 1 пользователь по ид который не входить 10. Как определить его позицию в рейтинге maska. Т.е как определить из 1млн. записи его позицию по набору maska в какой позиции юзер(ид юзера известен) . Выбрать всех сравнивать их по полю maska ?
Проще всего двумя запросами. Сначала получить значение mask для данного пользователя SELECT `mask` FROM `members` WHERE `id` = :user_id
Затем получить количество пользователей, стоящих в рейтинге выше данного
SELECT COUNT(*) FROM `members` WHERE `mask` < :user_mask