[Moscow.pm] Задачка на подумать, кому интересно...
Akzhan Abdulin
akzhan.abdulin на gmail.com
Пн Дек 2 06:51:41 PST 2013
посчитать селективность (запомнить однократно),
потом просто сгенерировать пачку псевдослучайных id и выполнить select по
ним (IN) с доп. условием на доступность всем. количество id равно
количество нужным поделить на селективность.
Получили результат. Если недостаточно, генерируем вторую пачку и отбираем
остаток.
Итого в среднем один запрос с поиском по PK + фильтр. Редко два.
Повторяемость обеспечивается выбором и настройкой алгоритма генерации
случайных чисел.
2 декабря 2013 г., 17:27 пользователь Михаил Монашёв <
postmaster на softsearch.ru> написал:
> Здравствуйте.
>
> Есть таблица с объектами в mysql. Новые объекты туда добавляются,
> плохие объекты удаляются, бывает что по много штук сразу. Некоторые
> объекты имеют статус скрытых от всех, а все остальные доступны для
> всех. Т.е. в таблице равномерно растёт id объектов, но между соседними
> id могут быть дырки, причём большие. И некоторые объекты показывать
> нельзя.
>
> Даётся текстовая строка. В идеале нужно для этой строке максимально
> быстро выбрать из таблицы случайные 3 разных объекта, доступные для
> всех. Причём так, чтобы повторные выборы давали те же самые объекты и
> изменения таблицы минимально влияли на это.
>
> Т.е. надо из перла обратиться к mysql-ю минимальное количество раз,
> сделав максимально быстрые запросы. Самое важное - скорость. Ей нельзя
> жертвовать. Можно жертвовать, но крайне нежелательно, привязкой строки
> к объектам. Понятно, что таблица меняется и привязки строк к объектам
> будут меняться. Необходимо, чтобы эти изменения были минимальны. Можно
> жертвовать количеством выбираемых объектов, например выбирать иногда
> не 3, а 2 или 1, но не 0. Можно жертвовать степенью случайности между
> выбираемыми объектами, например, выбирая лишь один случайным способом,
> а остальные искать поблизости от первого. Нельзя жертвовать охватом
> объектов таблицы, т.е. выбираться объекты должны среди всех не скрытых
> объектов.
>
> --
> С уважением,
> Михаил mailto:postmaster на softsearch.ru
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131202/39c82426/attachment.html>
Подробная информация о списке рассылки Moscow-pm