- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
ORDER BY RAND()?
А потом ко мне сразу, за платной консультацией, почему сайт дико тормозит и БД просто вешается.
А потом ко мне сразу, за платной консультацией, почему сайт дико тормозит и БД просто вешается.
ну, идея пока в том, чтобы создать кеш похожих новостей на другом сервере. потом просто сделать импорт уже на рабочую базу.
Не обязательно, можно выбирать рандомные записи, только 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;
SELECT
мой вариант
мой вариант
Он ничем не отличается от ORDER BY RAND() и БД умрёт от этого запроса.
БД 850 000 записей ORDER BY RAND()
Запрос занял 42.9442 сек.
А мой запрос пример:
Запрос занял 0.0007 сек
Дальше думаю сами разберёте, почему решение рандомного вывода это не очень стандартная задача.
Да конечно, это не полноценный рандом, если присмотреться.
Можно использовать вот такой:
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() и БД умрёт от этого запроса.
ну ну. проверь сначала и тогда узнаешь