Как вы генерируете случайные и уникальные идентификаторы - полезный вопрос, но вы, похоже, делаете предположение о , когда генерирует их!
Суть в том, что вам не нужно генерировать эти идентификаторы во время создания ваших строк, потому что они практически не зависят от вставляемых данных.
То, что я делаю, - это предварительно генерирую случайные идентификаторы для будущего использования, таким образом, я могу использовать свое приятное время и абсолютно гарантировать, что они уникальны, и во время вставки обработка не производится.
Например, у меня есть таблица заказов с указанием order_id. Этот идентификатор генерируется на лету, когда пользователь вводит заказ, постепенно 1,2,3 и т. Д. Навсегда. Пользователю не нужно видеть этот внутренний идентификатор.
Тогда у меня есть другая таблица - random_ids с (order_id, random_id). У меня есть подпрограмма, которая запускается каждую ночь, которая предварительно загружает эту таблицу достаточным количеством строк, чтобы покрыть заказы, которые могут быть вставлены в следующие 24 часа. (Если я когда-нибудь получу 10000 заказов за один день, у меня возникнет проблема - но это будет хорошая проблема!)
Этот подход гарантирует уникальность и отводит любую нагрузку обработки от транзакции вставки в пакетную процедуру, где это не влияет на пользователя.