первичный - или int или uuid
https://www.percona.com/blog/2019/11/22/uuids-are-...
https://www.percona.com/blog/2015/04/03/illustrati...
https://tomharrisonjr.com/uuid-or-guid-as-primary-...
дело в том что int можно перебрать, и это бывает
существенным способом защиты, (ну - преодоления защиты типа) - можно считать число юзеров, например, число записей/айтемов и чего угодно
а вот если не uuid - там будет своя пачка проблем, с уникальностью и индексами, так что для визуального нечисленного представления (типа строка, хотя конечно в базе это такой же binary как и int) - только uuid
можно масировать его без дефисов и все такое, само собой
добавлю про спор
Лентюй ,
Василий Банников и ТС выше: любой школьнег или хотя бы внимательный студент знает
что строки сравниваются медленнее чисел , но(!) когда речь о primary key -это не просто строка, это
проиндексированная строка, и вот тут же не все так однозначно:
мне лень искать SO запись, где ссылались как бы не на сам Мускуль со словами "а никакой разницы", + к своему стыду, я не помню, касалось это
строк или все же
uuid, но внутренне уверен что строк, в одном проекте где было макс 2 млн записей именно так и использовали - чтобы не спарсили
что касается миллиардов строк - то там, как на досветовых скоростях (да и на сверхзвуковых) - свои проблемы, как минимум, "все записать и не потерять", "не прос*рать бэкап или шард" и т.д и т.п., отсюда колоночные базы и проч и проч
короче говоря - в пределах разумного и миллионных объемов ( а в IRL только такие и есть, ну , канеш если мы не про временнЫе ряды / логи - опять же, для такого другие база используют) - можно строковый primary key