October 12th, 2012

dev

Помощь зала...

Вот интересная задача:

Есть таблица на сотни тысяч записей.
Нужно вытянуть из нее 20 случайных записей.
Проблема в том, что подобный запрос должен происходить при заходе пользователя на ресурс или обновлении страницы. При этом хочется, чтобы ресурс держал сотню заходов в секунду. При этом, конечно, хочется использовать кеширование.
Операции добавления намного будут сравнительно редки по сравнению с выборкой.


Пути решения:
Первый вариант:
добавить к каждой записи уникальный номер, всюду плотный (т.е. без дырок) и генерить в скрипте 20 случайных чисел. Минусы такого подхода в том, что не получится использовать кеширование (без извратов) и к тому же генератор случайностей в PHP-не очень...

Второй вариант:
генерить очередь (т.е. последовательность ID) и выбирать их оттуда по мере необходимости. Здесь возникает вопрос её генерации и ситуации, когда она закончится.

Третив вариант: ...


Есть у кого-нибудь идеи?