Есть ли причина не использовать auto_increment в индексе для таблицы базы данных?

Я унаследовал задачу поддержки сайта электронной коммерции с очень плохим кодом, и я работаю над рефакторингом большого количества кода и пытаюсь исправить текущие ошибки.

Каждая вставка в базу данных (добавление товара в корзину и т. Д. ) начинается с функции grab_new_id, которая подсчитывает количество строк в таблице, а затем, начиная с этого числа, опрашивает базу данных, чтобы найти неиспользуемый номер индекса. Помимо ужасной производительности (уже есть 40000+ строк, и индексы регулярно удаляются, поэтому иногда требуется несколько секунд, чтобы найти новый идентификатор), это регулярно ломается, когда две операции выполняются одновременно, поскольку добавляются две записи с повторяющимися номерами идентификаторов.

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

7
задан goldenapples 23 November 2010 в 21:12
поделиться