Помогите получить или отобразить случайные записи в ColdFusion из запроса MySQL? - PullRequest
0 голосов
/ 25 октября 2010

У меня есть ролик / скроллер jquery, который отображает фрагменты записей, возвращенных из моего запроса к таблице базы данных «Полезные советы».Я хочу сохранить скроллер около 15 записей, но не всегда первые 15 записей.

Более эффективно написать запрос наподобие:

SELECT *
FROM table
ORDER BY RAND()
LIMIT n

, который возвращает случайный результат или я возвращаю весь запрос, и мой компонент ColdFusion обслуживает случайное число запросарезультат?

Будущее моего скроллера будет включать в себя случайные записи из моей таблицы «Товары для продажи», поэтому я должен помнить об этом.

Ответы [ 3 ]

4 голосов
/ 25 октября 2010

Я согласен с тем, что возвращение большого результирующего набора значений, которые не будут использоваться в Coldfusion, является пустой тратой ресурсов, которые никогда не могут быть возвращены.

Но будьте осторожны с использованием MySQL RAND() функция для упорядочивания - когда вы наберете более 100 000 записей, она плохо масштабируется ( см. график ), и вам следует посмотреть на использование альтернатив .

1 голос
/ 25 октября 2010

Если вы не кэшируете относительно небольшой и статический запрос, обычно более эффективно рандомизировать записи на стороне базы данных. Таким образом, вы извлекаете только 15 записей, а не все записи в таблице.

1 голос
/ 25 октября 2010

Возвращение всего набора результатов и их выбрасывание большей части было бы определенно менее эффективным.

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

Ради полноты возможно что-то подобное, хотя и слишком медленное, чтобы быть практичным:

( SELECT * FROM table1 )
UNION
( SELECT * FROM table2 )
ORDER BY RAND()
LIMIT 30 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...