MySQL быстро выбирает 10 случайных строк из 600К строк - PullRequest
429 голосов
/ 02 декабря 2010

Как лучше всего написать запрос, который выбирает 10 строк случайным образом из общего числа 600 КБ?

Ответы [ 24 ]

0 голосов
/ 15 февраля 2013

Вот как я это делаю:

select * 
from table_with_600k_rows
where rand() < 10/600000
limit 10

Мне это нравится, потому что не требует других таблиц, его легко написать и очень быстро выполнить.

0 голосов
/ 04 апреля 2013

Полагаю, это лучший из возможных способов ..

SELECT id, id * RAND( ) AS random_no, first_name, last_name
FROM user
ORDER BY random_no
0 голосов
/ 05 ноября 2014

Я использую этот запрос:

select floor(RAND() * (SELECT MAX(key) FROM table)) from table limit 10

время запроса: 0,016 с

0 голосов
/ 24 февраля 2015

Используйте приведенный ниже простой запрос для получения случайных данных из таблицы.

SELECT user_firstname ,
COUNT(DISTINCT usr_fk_id) cnt
FROM userdetails 
GROUP BY usr_fk_id 
ORDER BY cnt ASC  
LIMIT 10
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...