@timkin1

Как оптимизировать ORDER BY RAND()?

Добрый день!

Имеется база данных data_names, состоящая из имен людей name и языка lang_iso. Необходимо достать случайное имя человека на определённом языке. Сейчас это делается с помощью ORDER BY RAND(), как известно, это очень медленный способ. Нашел такую оптимизацию, она работает действительно быстро, но у меня появилась следующая мысль: когда я делаю выборку имен на определенном языке, и потом вместо ORDER BY RAND() использую оптимизацию, приведенную выше, то возможно, что в получившейся выборке имена расположены не по порядку, и их индексы, например, могут быть такими: 1,2,100. Тогда вероятность выбора 3 имени в разы больше, т.к. вероятность выбора числа из интервала 3 - 100 в разы больше, чем из 1-2. Верно ли я понял приведенный алгоритм? Возможно ли как-то решить этот вопрос без перестроения БД?

Заранее спасибо!
  • Вопрос задан
  • 153 просмотра
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
11 мая 2024, в 00:19
1000 руб./за проект
10 мая 2024, в 23:51
30000 руб./за проект
10 мая 2024, в 23:33
2500 руб./за проект