Вывод случайной записи из таблицы

dima333

Новичок
Вывод случайной записи из таблицы

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

Glazyrin Sergey

Новичок
А нужно ли вам это ?
SELECT *
FROM table
ORDER BY RAND()
Только эта операция не сильно оптимизирована в Mysql.
Возможно имеет смысл сделать запрос выбрать айдишники - сделать array_rand в php.
просто чревато тормозами - если мускулем это делать
 

Glazyrin Sergey

Новичок
Ok Thx. Подумаю над этой темой
Btw, Я не утверждал что мое решение самое оптимальное, это самое простое и самое быстрое
Есть варианты другие. Все на самом деле зависит от точной постановки задачи. От того какой storage engine у таблицы и какие данные там
 

Glazyrin Sergey

Новичок
*****, ты имел ввиду ?
И всё же быстрее может оказаться решение в два запроса.
SELECT COUNT(*) ... + SELECT * ... LIMIT $rand,1, где $rand вычисляется на PHP
Это да идея - не юзал никогда

-~{}~ 23.01.09 20:19:

Только тут возникает проблема индексов
Если в таблице много записей, и limit больше 1000 например, то он будет все равно делать выборку 1001 записи.
То есть тут надо хитро делать

-~{}~ 23.01.09 20:19:

И если идет выборка более чем 30% записей из таблицы, то индексы не юзаются
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Разжевывалось в поиске 100500 тысч раз.

-~{}~ 23.01.09 20:39:

Поиск слева вверху.
 

fixxxer

К.О.
Партнер клуба
Вообще и правда в поиске куча мусора, напишу на всякий случай :)

$max = select id from table order by id desc limit 1;

$rand = mt_rand(1, $max);

select * from table
where id >= $rand
order by id limit 1;
 

Фанат

oncle terrible
Команда форума
в поиске обязательно должна быть умная мысль (моя :)
если вам нужна абсолютная случайность на выборке из сказывающегося на производителности объема - значит, вы что-то не додумали.
 
Сверху