Выбор случайных записей для использования на веб-странице - PullRequest
1 голос
/ 10 января 2009

Привет, ребята,

У меня есть веб-сайт. У меня есть раздел под названием «Мобильный раздел», в этом разделе содержится много категорий (Имя объекта, фотография + небольшое описание и ссылка для скачивания). Теперь раздел рассматривается как внутренний раздел. Я хочу просмотреть случайные записи из этого раздела на первой странице (я не знаю, как RSS, но не Rss), показывая название объекта и к каким подкатегориям он принадлежит и его изображение, если это возможно. Надеюсь, кто-нибудь поймет, что я пытаюсь сказать.

Это мой веб-сайт ЗДЕСЬ и это ссылка на внутреннюю страницу ЗДЕСЬ проверьте блок с надписью "Мобильный раздел". Есть ли какой-либо сценарий или технология, чтобы просмотреть его надлежащим образом, чтобы показать его примеры, если это возможно

Я использую php и MySQL

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 11 января 2009

Что бы вы ни делали, не используйте ORDER BY RAND () в MySQL. Это не будет масштабироваться. Да, это будет работать нормально для небольшого числа строк, потому что набор данных небольшой. ORDER BY RAND () требует полного сканирования таблицы, что означает, что чем больше ваша таблица, тем дольше будет выполняться запрос. Это будет проявляться как «Ну и дела, сайт кажется медленнее» ... и медленнее ... и медленнее ...

Если у вас есть столбец id, который является целым числом и действует как первичный ключ, вы можете сгенерировать максимальное значение в PHP, прежде чем запрашивать его, будет намного быстрее, потому что вы на самом деле используете индекс.

Примером может быть что-то вроде:

$random_row_id = rand(1, $max);

а потом ...

SELECT * FROM foo WHERE id = $random_row_id

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

Одно предостережение: если вы удалили записи из таблицы, у вас будут «дыры», в которых вы можете попросить строку, которой больше не существует. В этом случае вы можете просто продолжать поиск, пока не найдете совпадение - оно все равно будет намного быстрее, чем полное сканирование таблицы.

0 голосов
/ 10 января 2009

Эта идея как бы крадет у Дэвида Томаса Гарсиа. Что вы можете сделать, так это внедрить в своей базе данных поле, которое будет отслеживать просмотры продукта (или вы можете отказаться от этого и просто отслеживать покупки), и вы можете выбрать товары из вашей базы данных как «Лучшие продавцы» или «Горячие» Продукты ", чтобы затем отобразить на вашем сайте.

0 голосов
/ 10 января 2009

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

Тем не менее, было бы действительно легко написать метод в Microsoft SQL для этого:

SELECT TOP 1 Name, Picture, Description, Link
FROM Software
WHERE Category = 'Mobile Section'
ORDER BY NEWID()

Если вы не используете Microsoft SQL, вот сайт со случайными селекторами для многих баз данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...