Mysql 大id的最佳主键数据类型是什么?

Mysql 大id的最佳主键数据类型是什么?,mysql,sql,Mysql,Sql,在MySQL中,我需要存储长度为21的主键(google或facebook uid),其大小比int(最大值为2147483647)和BIGINT(最大值为9223372036854775807)大得多 我还阅读了有关varchar的内容,并意识到它存在低性能和自动增量问题 对于这种情况,什么是最好的主键?为什么不直接使用数字(21,0)?这似乎正好描述了你在寻找什么 我不会说“varchar的性能很低”。更准确的是,更短的关键点更好,而固定长度的关键点更好。因此,字符串作为索引的键不是最优的。

在MySQL中,我需要存储长度为21的主键(google或facebook uid),其大小比int(最大值为2147483647)和BIGINT(最大值为9223372036854775807)大得多

我还阅读了有关varchar的内容,并意识到它存在低性能和自动增量问题


对于这种情况,什么是最好的主键?

为什么不直接使用
数字(21,0)
?这似乎正好描述了你在寻找什么


我不会说“varchar的性能很低”。更准确的是,更短的关键点更好,而固定长度的关键点更好。因此,字符串作为索引的键不是最优的。但是,当需要时,它们仍然是非常合理的。

为什么不创建自己的id(INT AUTO_INCREMENT,如果足够的话)并为另一个键保留第二列,并使用足够长的VARCHAR?这是一个很好的解决方案,但是我需要如何将此id作为查询的主id来处理,有什么办法吗?就像你使用任何其他搜索键一样(没有真正的区别)。类似于
从google_id=:value
的某个表中选择*。所有FKs和其他查询仍然可以使用普通的数字id或任何其他需要的搜索条件。如果对PK使用字符串,您是否建议使用
CHAR
over
VARCHAR
,以便它们始终是固定长度?只是为了观察问题是否被标记MySQL@fubar . . . 这需要进行测试,以了解索引代码是否对键中使用的字符串类型敏感。numeric用于Oracle DB,我要求的是MySQL。@Emarco。打扰一下
numeric
/
decimal
是几乎所有数据库中都可用的标准SQL类型:。