Как сгенерировать случайное число (от 0 до 999999) которого нет в БД?
Требуется генерировать случайные числа, которых нет в БД. От 0 до 999999. В данный момент использую таблицу A с данными (где ID не повторяются и являются случайными и не последовательными) и таблицу B со списком ID (от 0 до 999999). Вычитаю из B таблицу A и получаю случайную строку. Это метод не совсем удобен т.к. таблица B занимает много места. Существуют ли альтернытивные способы (алгоритмы) для осуществления данной процедуры?
вы можете удалять записи из таблицы B при присвоении уникального id и возвращать данные при удалении из таблицы А. Ну и брать случайную строку из таблицы B. Место занимаемой таблицы будет понемногу уменьшаться...
Василий Медведев: Справедливо, максимальное число должно быть заведомо больше возможного количества строк, либо можно применить "хак" в виде расширения диапазона при достижении количества записей, например, в 50% от текущего максимального числа.
В БД построить индекс по ID (если ещё нет), в цикле пока ID не уникален генерировать его, проверка уникальности по селекту в БД. Имхо, иначе это не реализовать, нюансы только в способе проверки и в способе генерации.