Зачем создавать свои собственные каскады Хаара-классификатора?

Хорошо, если у вас нет пробелов в ваших ключах, и все они численные, вы можете рассчитать случайные числа и выбрать эти строки. но это, вероятно, не так.

Таким образом, одним из решений было бы следующее:

SELECT * FROM table WHERE key >= FLOOR(RAND()*MAX(id)) LIMIT 1

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

однако это НЕ действительно случайное, потому что ваши ключи, скорее всего, не будут распределены равномерно.

Это действительно большая проблема и нелегко решить выполнение все требования, rand () MySQL - это лучшее, что вы можете получить, если вам действительно нужны 10 случайных строк.

Существует, однако, еще одно быстрое решение, но также имеет компромисс, когда дело доходит до случайности, но может подойти вам лучше. Читайте об этом здесь: Как я могу оптимизировать функцию ORDER BY RAND () MySQL?

Вопрос в том, насколько вам это необходимо.

Можете ли вы объяснить немного больше, чтобы я мог дать вам хорошее решение.

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

Если вы вряд ли когда-либо обновляетесь, вы также можете заполнить инкрементирующий идентификатор, чтобы у вас не было пробелов и просто вычислить случайные ключи перед тем, как выбрать ... Это зависит от варианта использования!

13
задан Will 25 July 2013 в 18:13
поделиться