Ну, если у вас нет пробелов в ваших ключах, и они все числовые, вы можете вычислить случайные числа и выбрать эти строки. но это, вероятно, не так.
Таким образом, одним из решений будет следующее:
SELECT * FROM table WHERE key >= FLOOR(RAND()*MAX(id)) LIMIT 1
, который в основном гарантирует, что вы получите случайное число в диапазоне ваших ключей, а затем выберете следующий лучший, который больше.
Вы должны сделать это 10 раз.
однако это НЕ действительно случайно, потому что ваши ключи, скорее всего, не будут распределяться равномерно.
Это действительно большая проблема, и ее нелегко решить, выполнив все требования, MySQL rand () - лучшее, что вы можете получить, если вам действительно нужно 10 случайных строк.
Однако есть другое решение, которое быстро, но также имеет компромисс, когда дело доходит до случайности, но может подойти вам лучше. Прочтите об этом здесь: Как я могу оптимизировать функцию ORDER BY RAND () в MySQL?
Вопрос в том, насколько случайным вам это должно быть.
Можете ли вы объяснить немного больше, чтобы я мог дать вам хорошее решение.
Например, у компании, с которой я работал, было решение, в котором им требовалась абсолютная случайность очень быстро. В итоге они предварительно заполнили базу данных случайными значениями, которые были выбраны по убыванию и впоследствии снова установлены на разные случайные значения.
Если вы вряд ли когда-либо обновите, вы также можете заполнить инкрементный идентификатор, чтобы у вас не было пробелов и вы могли просто вычислить случайные ключи перед выбором ... Это зависит от варианта использования!