Как получить одну случайную запись из базы по критерию?
-
Всем привет, уже всю голову сломал. Подскажите, как получить одну случайную запись по критерию из базы
-
@cheltemov said in Как получить одну случайную запись из базы по критерию?:
Всем привет, уже всю голову сломал. Подскажите, как получить одну случайную запись по критерию из базы
В бас нормально это не сделать, если работать напрямую с mongodb то есть способы. Как вариант можете добавить дополнительное поле и пронумеровать все записи по порядку, а потом брать случайное число по количеству записей и по нему делать фильтрацию
-
@UserTrue said in Как получить одну случайную запись из базы по критерию?:
В бас нормально это не сделать, если работать напрямую с mongodb то есть способы. Как вариант можете добавить дополнительное поле и пронумеровать все записи по порядку, а потом брать случайное число по количеству записей и по нему делать фильтрацию
Примерно так и делаю ((( думал может есть более изящный способ.
-
@cheltemov said in Как получить одну случайную запись из базы по критерию?:
Всем привет, уже всю голову сломал. Подскажите, как получить одну случайную запись по критерию из базы
Используя mysql можно сделать :
SELECT * FROM accounts WHERE STATUS<>'ban' ORDER BY RAND() LIMIT 1;
-
@cheltemov А вы точно с BAS работаете.
- Получаем запись по критерию, если таких записей несколько нам выдает список.
- Получаем случайный элемент списка.
- Парсим и готовим.
Тут как бы даже вопросов нету, дел на 2-3 минуты.
-
@Dodok said in Как получить одну случайную запись из базы по критерию?:
@cheltemov А вы точно с BAS работаете.
- Получаем запись по критерию, если таких записей несколько нам выдает список.
- Получаем случайный элемент списка.
- Парсим и готовим.
Тут как бы даже вопросов нету, дел на 2-3 минуты.
В таком подходе проблемы начнутся при большой полученной выборке по критериям, скажем миллион записей. И частому обращению к базе данных, например если 50 потоков раз в минуту обращаются к базе данных
-
@Dodok said in Как получить одну случайную запись из базы по критерию?:
Тут как бы даже вопросов нету, дел на 2-3 минуты.
как бы записей под 3 млн. И это точно костыль по производительности (получить три ляма и выбрать одну ))) ). Ну даже если по критерию даст 20 тыс. Да даже если и 5
и да как бы с bas
-
@cheltemov said in Как получить одну случайную запись из базы по критерию?:
как бы записей под 3 млн. И это точно костыль по производительности (получить три ляма и выбрать одну ))) ). Ну даже если по критерию даст 20 тыс. Да даже если и 5
и да как бы с basТак вы уточняйте количество записей.
-
@Fox Если более 1 млн записей то БД от BAS вообще использовать не стоит как бы грустно это не было. Проходил и не раз, до 100к и не более.
-
@cheltemov Если сильно хочется то можете подключиться напрямую через nodejs (в разделе лайфкахи есть пример подключения к встроенной) и использовать aggregate с оператором $sample
-
@UserTrue said in Как получить одну случайную запись из базы по критерию?:
Если сильно хочется то можете подключиться напрямую через nodejs (в разделе лайфкахи есть пример подключения к встроенной) и использовать aggregate с оператором $sample
спс. щас гляну