Общие > Базы данных

Случайная картинка

<< < (2/4) > >>

Egorsha:
Это полный запрос. Поменяй только название базы, если не совпадает.

А ветка скорее всего "Базы данных".
Там кстати такое уже обсуждалось - одна случайная запись из базы.

tigranav:
Примного благодарен.

html_coder:

--- Цитировать ---Egorsha:
По другому тоже можно. И быстрее будет. Но это тема другой ветки форума.

 SELECT * FROM images ORDER BY RAND() LIMIT 1

 - всего один запрос.
--- Конец цитаты ---


Egorsha, а вы уверены что это будет быстрее???

А если таблица будет большая?

Из документации по MySQL:

В выражениях вида ORDER BY не следует использовать столбец с величинами RAND(), поскольку применение оператора ORDER BY приведет к многократным вычислениям в этом столбце.

Egorsha:
Если уж очень интересно, то попытаюсь ответить...
(Хотя сейчас, после переноса топика в другую ветку - опять разговор не по теме получится.)

На счет уверенности - скорее уверен в том, что ни в чем не уверен.

Но осмелюсь заметить, что в заданном вопросе не уточнялась какая база используется. (Решили, что MySQL - типа "по умолчанию"). А вдруг у других БД в документации по иному прописано.

Быстрее? Можно проверить на опыте, в данном конкретном случае (это дело задавшего вопрос).

И еще хочу объяснить, то почему ответил в этом топике.
Мне просто не понравился первоначальный  Ваш ответ. :)

Почему?  

Все просто -  приведенный Вами код делает не то, о чем спрашивали.

Построчно:
- запрос на количество записей в таблице;
- получение количества записей;
- случайное число N в интевале от "нуля" до "количество записей"
-... и наконец получение N первых записей из таблицы (но не одной случайной)

При Вашем подходе к поставленному вопросу, нужно сделать выборку всех записей (при большой базе - получится большой массив), в посчитать количество элементов массива, случайным образом выбрать элемент массива, содержащий id-записи и по этому id получить запись из базы. Нумерация записей может быть не скозной, а с пробелами (к примеру записи id=999 может не быть в базе, а N=999).

И что так быстрее будет (если база большая)?

И, кстати, вместо функции rand()  лучше бы воспользоваться mt_rand()....

Но от темы уже ушли.

Может закрыть эту тему? а?

for_i_0:
Egorsha
[OFF]Пожалуй, подождем html_coder - а.[/OFF]

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии