我已经在 Stack Overflow 上看到过类似的帖子,但不太满意。
假设我提供 Web 服务。 http://foo.com/SERVICEID
SERVICEID 是用于引用服务的唯一字符串 ID(以 64 为基数,小写/大写 + 数字),类似于 URL 缩短服务如何为 URL 生成 ID。
我了解比较字符串与整数存在固有的性能问题。
但我很好奇如何最大限度地优化String类型的主键。
我正在使用 MySQL,(目前使用的是 MyISAM 引擎,虽然我承认不了解所有引擎差异)。
谢谢。
update 出于我的目的,该字符串实际上只是一个 base62 编码的整数,因此主键是一个整数,并且由于您不可能超过 bigint 的大小,所以它不会使用其他任何东西都太有意义了(对于我的特定用例)
最佳答案
使用 CHAR 或 VARCHAR 作为主键没有任何问题。
在很多情况下,它肯定会比 INT 占用更多的空间,但在很多情况下,它是最合乎逻辑的选择,甚至可以减少您需要的列数,从而提高效率,避免需要有一个单独的 ID 字段。
例如,国家代码或州缩写已经具有标准化的字符代码,这将是使用基于字符的主键而不是为每个附加组成任意整数 ID 的一个很好的理由。
关于MySQL - 使用字符串作为主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3455297/