Я унаследовал задачу поддержки очень плохо закодированного сайта электронной коммерции, и я работаю над рефакторингом большого количества кода и пытаюсь исправить текущие ошибки.
Каждая вставка базы данных (добавлениетовар в корзину и т. д.) начинается с функции grab_new_id, которая СЧИТЫВАЕТ количество строк в таблице, а затем, начиная с этого числа, запрашивает базу данных, чтобы найти неиспользуемый индексный номер.В дополнение к ужасной производительности (уже более 40 000 строк и индексы регулярно удаляются, поэтому иногда для поиска нового идентификатора требуется несколько секунд), это происходит регулярно, когда две операции выполняются одновременно, так как добавляются две записис дублирующимися идентификационными номерами.
Это кажется мне идиотским - почему бы просто не использовать автоинкремент в поле индекса?Я проверил это обоими способами, и добавление строк в таблицу без указания идентификатора индекса (очевидно) во много раз быстрее.Мой вопрос: может ли кто-нибудь придумать причину, по которой это мог сделать оригинальный программист?Есть ли какая-то школа мысли, где auto_increment почему-то считается дурным тоном?Существуют ли базы данных, которые не имеют возможности автоинкремента?