LEOnidUKG

LEOnidUKG
Рейтинг
1776
Регистрация
25.11.2006
Должность
PHP
Интересы
Программирование
lutskboy #:

я раньше этим делом занимался. суть там сводится к тому что у меня скрипт php доставал макс и мин id 

потом генерил рандомные айди в этом промежутке. например 100. так как могут быть дыры в бд. 

а потом просто доставал записи WHERE id IN(6,890,7854, ...) 

Это прошлый век, у меня было такое для постраничной навигации. Все ID в файлике и потом по ним навигация.

1. Никак, только в ручном режиме каждые 3 месяца обновлять

2. Купить сертификат

p.s. сменить хостера или взять простой VDS с бесплатной панелью

lutskboy #:
Лёня  мой запрос да, немного затупил. Но и твой не рандом. Он по порядку достает с определенного места с бд

Ну я же второй сообщение ниже написал. Как его можно пропустить то?!

Основная задача выводить похожие новости за любое время. Первый запрос берёт случайную ID запись и начиная с неё выводит дальше записи по ID. Эта задача решается с наименьшими затратами. Особенно если надо вывести просто 3-5 новостей для человека.

Далее, если нужен дикий рандом, тогда для этого я выложил второй запрос. Но он по ресурсам дороже.

Поэтому тут уже решает каждый для себя сам, что выбрать.

lutskboy #:

ну ну. проверь сначала и тогда узнаешь

Я всё проверяю перед тем как что-то писать.

Запрос занял 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 сек.

Поэтому тут надо выбирать баланс. Но учитывая, что надо выбирать именно похожие записи к новости, тогда первый вариант самый лучший.

lutskboy #:

мой вариант

Он ничем не отличается от  ORDER BY RAND() и БД умрёт от этого запроса.

БД 850 000 записей ORDER BY RAND()

Запрос занял 42.9442 сек.

А мой запрос пример:

Запрос занял 0.0007 сек

Дальше думаю сами разберёте, почему решение рандомного вывода это не очень стандартная задача.

iccup #:
ну, идея пока в том, чтобы создать кеш похожих новостей на другом сервере. потом просто сделать импорт уже на рабочую базу.

Не обязательно, можно выбирать рандомные записи, только 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;

Адаптировать думаю можно под DLE
Massimo2223 #:
ORDER BY RAND()?

А потом ко мне сразу, за платной консультацией, почему сайт дико тормозит и БД просто вешается.

Владислав #:
Здравствуйте, ваша ссылка готова. Данные по заказу отправили на указанную почту. Главная страница уже проиндексирована в ПС. 

Данные дропа:

DA = 11

REFERRING DOMAINS = 790 (но там много мусора из-за того что был дропом)

Бэки на дроп тематические в основном.

Ссылка на главной как и обещали. Теперь только процветанию этому дропу и сайту надо.

Место на диске случаем не закончилось?
Всего: 31516