powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подгрузка RAND через AJAX
8 сообщений из 8, страница 1 из 1
Подгрузка RAND через AJAX
    #39954467
zhenia3003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подгружаю через AJAX новости в случайном порядке, как сделать, чтобы при новой подгрузке новости не повторялись?
SELECT * FROM news order by RAND() LIMIT $num, 10
...
Рейтинг: 0 / 0
Подгрузка RAND через AJAX
    #39954514
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточните формулировку:
"Вероятность показа показанной новости такая же, как непоказанной" или "вероятность показа новости, показанной за последние N раз/ N часов, гарантированно равна 0"?

В первом случае достаточно так:
Код: sql
1.
SELECT * FROM news order by RAND() LIMIT 10

($num смысла не имеет, только вредит производительности)

Во втором примерно так:
Код: sql
1.
2.
3.
SELECT * FROM news 
WHERE id NOT IN (список id ранее показанных новостей
order by RAND() LIMIT 10



Но обе эти конструкции из-за order by RAND() будут тяжелыми по производительности.
...
Рейтинг: 0 / 0
Подгрузка RAND через AJAX
    #39954523
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если новостей достаточно много, но их список обновляется редко, то я бы предложил идти другим путем:
Завести отдельное поле random_order_id, проиндексировать его, периодически (раз в сутки, например) апдейтить все активные новости номерами в случайном порядке (неактивным проставлять NULL, тогда их и фильтровать не понадобится), а очередную порцию выдавать так:
Код: sql
1.
SELECT * FROM news WHERE random_order_id > prev_random_order_id ORDER BY random_order_id LIMIT 10

где вместо prev_random_order_id подставлять самый большой random_order_id из предыдущей выборки.

Если в какой-то момент random_order_id превысит количество активных новостей, то сбрасывать его в 0. Показ начнется сначала.
...
Рейтинг: 0 / 0
Подгрузка RAND через AJAX
    #39954526
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhenia3003
Подгружаю через AJAX новости в случайном порядке
Каждому клиенту - свой случайный порядок? или один на всех?
...
Рейтинг: 0 / 0
Подгрузка RAND через AJAX
    #39954559
zhenia3003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, если 100 тыс записей будет, их все проблематично в NO IN хранить
...
Рейтинг: 0 / 0
Подгрузка RAND через AJAX
    #39954560
zhenia3003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, каждому свое
...
Рейтинг: 0 / 0
Подгрузка RAND через AJAX
    #39954561
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhenia3003
miksoft, если 100 тыс записей будет, их все проблематично в NO IN хранить
Сортировать ранодомом весь набор тоже не сладко будет.

А посему - уточняйте требования.
...
Рейтинг: 0 / 0
Подгрузка RAND через AJAX
    #39954623
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zhenia3003
если 100 тыс записей будет, их все проблематично в NO IN хранить
Если выбирать случайные (сколько там? десять из ста тысяч?) - я бы лично поклал на вероятность повторного вывода. Тем более что в ТАКОЙ куче даже если и попадутся дубли - хрен это кто заметит.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Подгрузка RAND через AJAX
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]