Как насчет
MD5(CONCAT(user_id, 'a secret salt'))
Если у вас 9 триллион пользователей, есть один шанс, что 9 триллионов двух пользователей будут иметь один и тот же MD5.Но это 32 шестнадцатеричные цифры.
Встроенный UUID имеет тип 1, что означает, что он имеет компонент времени.Заметьте, сколько из двух uuids одинаково:
mysql> SELECT UUID(), SLEEP(1), UUID()\G
*************************** 1. row ***************************
UUID(): b1a32a13-7f73-11e9-baa3-e4a7a03bbe24
SLEEP(1): 0
UUID(): b23bc508-7f73-11e9-baa3-e4a7a03bbe24
Несмотря на это, 7 из 32 символов отличаются только через 1 секунду.
Вот миллисекундная задержка:
mysql> SELECT UUID(), SLEEP(0.001), UUID()\G
*************************** 1. row ***************************
UUID(): 074ca3bc-7f74-11e9-baa3-e4a7a03bbe24
SLEEP(0.001): 0
UUID(): 074ccdc5-7f74-11e9-baa3-e4a7a03bbe24
Запуск UUID на разных машинах приведет к тому, что куча других цифр будет другой.