mysql :: рандомный 6ти символьный не повторяющийся ID

Статус
В этой теме нельзя размещать новые ответы.

DOLARiON

Гуру форума
Регистрация
4 Сен 2006
Сообщения
191
Реакции
65
т.е.
у меня есть некий ID некоего события, который юзер должен запоминать (записывать)

он нужен НЕ порядковый + его надо записывать в базу

вопрос: можно ли какнть средствами мускля поле ID сделать на автомате рандомным?

когда их 10 000 таких - вопросов нет.. .сгенерить просто
а когда у нас 999999 всего и из них 600000 занято... на генерацию может уйти туева хуча времени.......... и туева хуча циклов...

под циклом я понимаю - генерим рандомные и проверяем... пока не попадется не заюзанный

ЗЫ. хранится все это делао - 2 месяца, далее - чистим с датой > 2 месяцев
 
Была похожая задача, но только не в миллионном масштабе. Решил так: создается таблица sometable с полями id(int, auto increment, key) и randoms(int), она заполняется(в твоем случае до 1кк) таким образом, что каждый уже занятый номер находится в строке с таким же id, все остальные(не занятые) заполняются нулями.

Когда же нужно получить новый рандомный номер, то делаешь запрос вроде
SELECT id FROM sometable WHERE randoms = 0 ORDER BY RAND() LIMIT 1.
И после этого записываешь этот же номер в ту же строку в поле randoms.

Когда записи чистятся, то делаешь наоборот.
 
эээм... если я правильно понял:
есть таблица в которой 999 999 записей состоящая из 2х колонок...

к примеру:
id, used

id = 100 000 до 999 999 - ID-ки
used = 0 или 1 - использовано ли это значение? да/нет

выбираем рандомно где used = 0

гениально и просто!!!
спасиб! :)
 
Да, все верно. Ты даже еще больше упростил решение. :) Рад, что помог.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху