Univers
Новичок
Была задача заменить часть php кода на mysql.
Код создаёт рандомное имя для файла и записывает в таблицу, но если такое имя есть, то заново генерирует имя и записывает....
Таблица:
id(PRIMARY), filename(UNIQUE)-varchar(могут быть и буквенные значения)
Было:
Сделал:
Вопросы:
1. Как избавиться от php-цикла? Можно ли сделать подобное на mysql?
2. Можно ли рандомное значение во втором примере сразу сохранить в переменную php? Или разве что, сразу после цикла с инсертом - делать select с insert_id? Хочется минимум телодвижений/максимум производительности.
3. Во втором примере производительность лучше, чем в первом? Как оптимизировать?
4. Как сделать буквенное рандомное значение в mysql с ограниченным кол-вом знаков?
Код создаёт рандомное имя для файла и записывает в таблицу, но если такое имя есть, то заново генерирует имя и записывает....
Таблица:
id(PRIMARY), filename(UNIQUE)-varchar(могут быть и буквенные значения)
Было:
PHP:
for(;;){
$var=rand(1,99999);
$test=mysql_result(mysql_query("SELECT COUNT(id) FROM table WHERE filename=$var LIMIT 1"),0);
if($test==0) mysql_query("INSERT INTO table VAUES (NULL,$var)");break;
}
PHP:
do{
mysql_query("INSERT IGNORE INTO `tmp` VALUES(NULL,FLOOR(1 + (RAND() * 999999)))");}
while(mysql_insert_id())
1. Как избавиться от php-цикла? Можно ли сделать подобное на mysql?
2. Можно ли рандомное значение во втором примере сразу сохранить в переменную php? Или разве что, сразу после цикла с инсертом - делать select с insert_id? Хочется минимум телодвижений/максимум производительности.
3. Во втором примере производительность лучше, чем в первом? Как оптимизировать?
4. Как сделать буквенное рандомное значение в mysql с ограниченным кол-вом знаков?