@az2rt
QA Engineer

Как дернуть из таблички рандомную запись?

Я знаю такой способ:
select * from table order by rand() limit 1
Но скорость выполнения удручает, а что используете вы?
  • Вопрос задан
  • 213 просмотров
Решения вопроса 1
elevenelven
@elevenelven
Php Dev @ Amadeus
Поменяйте `table` на название вашей таблицы, и скажите есть ли прирост в скорости.
SELECT tab1.`id`  FROM `table` AS tab1
  JOIN
    (SELECT
      (  RAND() * (SELECT MAX(id) FROM `table`) ) 
    AS id )
  AS tab2
 WHERE tab1.id >= tab2.id
 ORDER BY tab1.id ASC
 LIMIT 1;
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
$id = rand(1....10000)
select * from where id=$id
Ответ написан
DJZT
@DJZT
Laravel - code for you
MySql нет нормального функционала рандомной выборки. Поэтому юзайте rand()

$rez = mysql_query("SELECT id from table")
$id = array_rand(mysql_fetch_array($rez))['id'];


Этот код исключит не существующие id в таблице
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы