Если вы собираетесь присоединяться к другим таблицам, varchar, особенно широкий varchar, может быть медленнее, чем int.
Кроме того, если у вас много дочерних записей, а varchar может измениться, каскадные обновления могут привести к блокировке и задержкам для всех пользователей.Varchar, как номер автомобиля VIN, который редко, если когда-либо изменить, это хорошо.Varchar как имя, которое изменится, может быть кошмаром, ждущим, чтобы случиться.ПК должны быть стабильными, если это вообще возможно.
Далее многие возможные varchar Pks не являются действительно уникальными, и иногда они кажутся уникальными (например, номера телефонов), но их можно использовать повторно (вы отказываетесь от номера, телефонная компания переназначает его), и тогда дочерние записи могут бытьприкреплен не в том месте.Поэтому убедитесь, что у вас действительно есть уникальное неизменное значение перед использованием.
Если вы решите использовать суррогатный ключ, создайте уникальный индекс для поля varchar.Это дает вам преимущества более быстрого объединения и обновления записей, если что-то меняется, но сохраняет уникальность, которую вы хотите.
Теперь, если у вас нет дочерних таблиц, и, вероятно, никогда не будет, большая часть этого - спорный вопрос, а добавление целого числа pk - просто трата времени и пространства.