<div dir="ltr">Ну тут есть нюанс, если вдруг пришлось выполнить более одного запроса, можно в динамике уменьшить значение селективности, что приведет к генерации большей последовательности и большей вероятности получения всех данных за один запрос. Так что вопрос лишь в том, чтобы селективность считалась верно. При равномерном распределении по признаку "видно всем и существует" будет гарантия на много девяток по выборке одним запросом.</div>
<div class="gmail_extra"><br><br><div class="gmail_quote">2 декабря 2013 г., 19:11 пользователь Oleg Alistratov <span dir="ltr"><<a href="mailto:ali@ali.org.ua" target="_blank">ali@ali.org.ua</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Вот это хороший вариант, но недетерминированный по времени выполнения, против чего Михаил уже возражал.</div><div>
Особенно много промахов будет вначале, пока объектов в таблице немного.</div><div> </div><div>02.12.2013, 16:52, "Akzhan Abdulin" <<a href="mailto:akzhan.abdulin@gmail.com" target="_blank">akzhan.abdulin@gmail.com</a>>:</div>
<div class="HOEnZb"><div class="h5"><blockquote type="cite"><div>посчитать селективность (запомнить однократно),<div> </div><div>потом просто сгенерировать пачку псевдослучайных id и выполнить select по ним (IN) с доп. условием на доступность всем.  количество id равно количество нужным поделить на селективность.</div>
<div> </div><div>Получили результат. Если недостаточно, генерируем вторую пачку и отбираем остаток.</div><div> </div><div>Итого в среднем один запрос с поиском по PK + фильтр. Редко два.</div><div> </div><div>Повторяемость обеспечивается выбором и настройкой алгоритма генерации случайных чисел.</div>
<div> </div></div><div><br><br><div>2 декабря 2013 г., 17:27 пользователь Михаил Монашёв <span><<a href="mailto:postmaster@softsearch.ru" target="_blank">postmaster@softsearch.ru</a>></span> написал:<br><blockquote style="margin:0 0 0 0.8ex;border-left:1px #ccc solid;padding-left:1ex">
Здравствуйте.<br> <br> Есть  таблица  с  объектами  в  mysql. Новые объекты туда добавляются,<br> плохие  объекты  удаляются,  бывает что по много штук сразу. Некоторые<br> объекты  имеют  статус  скрытых  от всех, а все остальные доступны для<br>
 всех. Т.е. в таблице равномерно растёт id объектов, но между соседними<br> id  могут  быть  дырки, причём большие. И некоторые объекты показывать<br> нельзя.<br> <br> Даётся  текстовая  строка.  В идеале нужно для этой строке максимально<br>
 быстро  выбрать  из  таблицы случайные 3 разных объекта, доступные для<br> всех.  Причём так, чтобы повторные выборы давали те же самые объекты и<br> изменения таблицы минимально влияли на это.<br> <br> Т.е.  надо  из  перла обратиться к mysql-ю минимальное количество раз,<br>
 сделав максимально быстрые запросы. Самое важное - скорость. Ей нельзя<br> жертвовать. Можно жертвовать, но крайне нежелательно, привязкой строки<br> к  объектам. Понятно, что таблица меняется и привязки строк к объектам<br>
 будут меняться. Необходимо, чтобы эти изменения были минимальны. Можно<br> жертвовать  количеством  выбираемых объектов, например выбирать иногда<br> не  3, а 2 или 1, но не 0. Можно жертвовать степенью случайности между<br>
 выбираемыми объектами, например, выбирая лишь один случайным способом,<br> а  остальные  искать  поблизости от первого. Нельзя жертвовать охватом<br> объектов таблицы, т.е. выбираться объекты должны среди всех не скрытых<br>
 объектов.<br> <span><font color="#888888"><br> --<br> С уважением,<br>  Михаил                          mailto:<a href="mailto:postmaster@softsearch.ru" target="_blank">postmaster@softsearch.ru</a><br> <br> --<br> Moscow.pm mailing list<br>
 <a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a><br> </font></span></blockquote></div></div>,<p>-- <br>Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org/" target="_blank">http://moscow.pm.org</a></p></blockquote><div> </div><div> </div></div></div><span class="HOEnZb"><font color="#888888"><div>
-- <br>Oleg Alistratov</div></font></span><br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br></div>