CREATE TABLE IF NOT EXISTS `city` (
`id` int(7) NOT NULL AUTO_INCREMENT,
`test` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `test` (`test`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
При работе с базой 90 процентов идет вставок именно новых значений, для дальнейшей работы скрипта нужен ID уникальный. Что я делаю. Я делаю вставку не проверяя уникальности значения: и получаю mysqli_insert_id() ID. Если ID получено != 0 значит вставка прошла успешно. Если вернулся 0 делаем запрос и выгребаем через SELECT ID существующей строки. Два вопроса:
- правильный ли алгоритм такой работы? Объем очень большой!
- при обращении ошибочного запроса который вернет 0 auto_increment увиличивается на 1. Я стал делать так перед каждым запросом:
alter table `city` auto_increment=1;
INSERT INTO city VALUES (NULL, 'Stuttgarwtredsdddss');
Но может есть другой способ более гуманный? Не трясти всю таблицу скажем на 150 гигов.