Я уже видел подобный пост в Stack Overflow, но был не совсем удовлетворен.MySQL - используя String в качестве основного ключа
Предположим, я предлагаю веб-сервис. http://foo.com/SERVICEID
SERVICEID - уникальный идентификатор строки, используемый для ссылки на услугу (базовый 64, нижний/верхний регистр + номера), аналогичный тому, как службы сокращения URL-адресов генерируют идентификаторы URL-адреса.
Я понимаю, что существуют проблемы с производительностью при сравнении строк и целых чисел.
Но мне любопытно, как максимально оптимизировать первичный ключ типа String.
Я использую MySQL (в настоящее время используется движок MyISAM, хотя я, по общему признанию, не понимаю все отличия двигателя).
Спасибо.
обновление для моей цели строка была на самом деле просто base62 закодирован целое, так что первичный ключ был целым, и так как вы, вероятно, никогда не превышает размер BigInt не он просто не делает слишком много смысла используйте что-нибудь еще (для моего конкретного случая использования)
Спасибо, я был уверен, что я не был бы большой разницей, но хотел услышать от сообщества, которое «там было сделано» –
Примечание: для столбцов, которые являются только кодом, ограниченным ASCII, а не действительными словами (например, хеши, base64, стандартные коды стран и т. д.), может быть хорошей идеей использовать сортировку 'ascii_bin'. Если вы используете сортировку на основе utf-8, она зарезервирует 3 или 4 байта на символ для столбцов CHAR вместо 1. – thomasrutter
Не используйте коды стран в своих первичных ключах. – displayname