я раньше этим делом занимался. суть там сводится к тому что у меня скрипт php доставал макс и мин id
потом генерил рандомные айди в этом промежутке. например 100. так как могут быть дыры в бд.
а потом просто доставал записи WHERE id IN(6,890,7854, ...)
Это прошлый век, у меня было такое для постраничной навигации. Все ID в файлике и потом по ним навигация.
1. Никак, только в ручном режиме каждые 3 месяца обновлять
2. Купить сертификат
p.s. сменить хостера или взять простой VDS с бесплатной панелью
Ну я же второй сообщение ниже написал. Как его можно пропустить то?!
Основная задача выводить похожие новости за любое время. Первый запрос берёт случайную ID запись и начиная с неё выводит дальше записи по ID. Эта задача решается с наименьшими затратами. Особенно если надо вывести просто 3-5 новостей для человека.
Далее, если нужен дикий рандом, тогда для этого я выложил второй запрос. Но он по ресурсам дороже.
Поэтому тут уже решает каждый для себя сам, что выбрать.
ну ну. проверь сначала и тогда узнаешь
Я всё проверяю перед тем как что-то писать.
Запрос занял 37.0812 сек
Да же по синтаксису это равнозначные запросы с ORDER BY RAND() тут просто RAND() вынесли в переменную.
Да конечно, это не полноценный рандом, если присмотреться.
Можно использовать вот такой:
SELECT `cms_freepages`.* FROM (SELECT id FROM `cms_freepages` ORDER BY RAND() LIMIT 5 ) AS ids JOIN `cms_freepages` ON `cms_freepages`.id = ids.id;
Но, он будет медленнее
Запрос занял 0.2970 сек.
Поэтому тут надо выбирать баланс. Но учитывая, что надо выбирать именно похожие записи к новости, тогда первый вариант самый лучший.
мой вариант
Он ничем не отличается от ORDER BY RAND() и БД умрёт от этого запроса.
БД 850 000 записей ORDER BY RAND()
Запрос занял 42.9442 сек.
А мой запрос пример:
Запрос занял 0.0007 сек
Дальше думаю сами разберёте, почему решение рандомного вывода это не очень стандартная задача.
Не обязательно, можно выбирать рандомные записи, только BY RAND() при этом не использовать.
например такой:
SELECT cat,trans,name FROM `cms_freepages` f JOIN ( SELECT rand() * (SELECT max(id) from `cms_freepages`) AS max_id ) AS m WHERE f.id >= m.max_id ORDER BY f.id ASC LIMIT 20;
А потом ко мне сразу, за платной консультацией, почему сайт дико тормозит и БД просто вешается.
Данные дропа:
DA = 11
REFERRING DOMAINS = 790 (но там много мусора из-за того что был дропом)
Бэки на дроп тематические в основном.
Ссылка на главной как и обещали. Теперь только процветанию этому дропу и сайту надо.