Случайная строка из большого результата запроса - PullRequest
1 голос
/ 17 августа 2010

Мне нужно получить 1-2 строки из результатов запроса, извлеченных с помощью SQL select для индексированных столбцов, без получения всего набора записей.

Например, я получу 10 000 записей, используя запрос

SELECT * FROM table WHERE field 1>1 AND field1 < 10

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

Я могу использовать

SELECT * FROM table WHERE field 1>1 AND field1 < 10 LIMIT 100, 1

Но я не знаю количественных записей, чтобы использовать правильное смещениедиапазон

Как мне достичь этой цели?

Ответы [ 2 ]

0 голосов
/ 17 августа 2010

Как насчет ограничения записей, которые вы выбираете в первую очередь?

SELECT * FROM table WHERE field1 IN (CONVERT(RAND()*10,SIGNED),CONVERT(RAND()*10,SIGNED)) LIMIT 2
0 голосов
/ 17 августа 2010

Вы можете использовать ORDER BY RAND ()

SELECT * FROM table WHERE field1 > 1 AND field1 < 10 ORDER BY RAND() LIMIT 1

Это вернет 1 случайную строку с полем 1 в диапазоне от 1 до 10

...