title
Description
Body
tipsun, а если окажется что в БД выбранное 51 это последняя запись? Хотя это неплохой вариант. Мне кажется в ссылках есть пример (из комментариев) вроде подходит, надо бы попробовать его. Но хочу доделать свой через мульти + php чтобы сравнить скорость.
Неактивен
tipsun написал:
koji, а нельзя сделать типа: сгенерировать 1 случайное число и ограничить кол-во записей LIMIT 10.
А чтоб не получилось так, что не хватает записи при 100 записях в базе и сгенерило случ. число 95, сделать -10 у получаемого рандомного числа.
Записи будут только идти подряд, но будут уникальными и своего рода тоже рандомными
Неактивен
tipsun, благодарю
Добавлено спустя 5 минут 31 секунду:
При 10646 записях в БД
ORDER BY RAND()
0.014
первый уникальный с последующими за ним числами (51, 52, 53, 54 и т.д.)
0.003
т.е.
|
|
Неактивен
tipsun, видимо на скорую руку набросал я тоже сомневался
доработал свой кусок, он отлично выбрасывает более 10 уникальных random,
выбираю по ключам в масиве $unique от 0 до 9 а остальное остается (2-5 элементов)
|
|
вариант из двух: тот, что посоветовал ты и через multi_query. Последний срабатывает за 0.005. Там сгенерировать 10 запросов с выборкой WHERE id = $unique[$i] Надо бы запустить на базе побольше, тогда точно станет ясно.
Отредактировано koji (2015.08.25 23:03)
Неактивен
Gemorroj, что "скажешь"? Мне кажется есть ещё более крутой и оптимизированный способ.
Чисто из "спортивного" интереса сейчас ещё посидел, подумал.
Вот вроде норм вышло, но чем меньше множество, тем больше повторов и больше циклов.
+ фильтры на данные нужны, чтоб записей было более 0 и все такое крч.
|
|
Неактивен
Если кол-во записей совпадает с кол-во выводимых постов, то можно вообще сделать через: shuffle(range(1, 10));
Кстати подряд идущие записи ты прежде чем вывести можешь раскидать в массиве этой функцией: shuffle($array);
Неактивен