Хорошо, что быстрее и лучше использовать?
auto_increment
или
Вызовите sql, который делает максимум, а затем добавьте один
Итак, в конечном итоге вопрос заключается в том, следует ли использовать MySQL для этого или сделать это самостоятельно?
Определенно автоинкремент. SQL, который вы бы написали, не является поточно-ориентированным и будет применяться только к данным, которые вводятся через вашу хранимую процедуру / sql.
auto_increment будет быстрее, чем максимальный агрегат, который должен будет выполнить поиск индекса по меньшей мере или полный просмотр таблицы в худшем случае. Кроме того, max () может не быть поточно-ориентированным, если вы не очень осторожны.
Проблема с использованием MAX заключается в уровне изоляции - в лучшем случае есть вероятность завышения значения из-за чтения записей, которые могут быть неправильными. В худшем случае запрос на выбор текущего максимального значения считывает таблицу до того, как произойдет предыдущая вставка, что приводит к коллизии.
Еще одним соображением является необходимость создания собственного генератора идентификаторов и прочего для получения идентификатора, потому что вы не можете использовать LAST_INSERT_ID().
LAST_INSERT_ID()