MySQL:主键是一个8字节的字符串。使用BIGINT或BINARY(8)会更好吗?

时间:2011-09-04 17:22:48

标签: mysql binary-data

我们需要在MySQL(InnoDB)表中存储许多行,所有这些行都有一个8字节的二进制字符串作为主键。 我想知道最好使用BIGINT列类型(包含64位,因此是8字节,整数)或BINARY(8),这是固定长度。

由于我们在应用程序中使用这些id作为字符串,而不是数字,因此将它们存储为二进制字符串听起来更加连贯。但是,我想知道这是否存在性能问题。这有什么不同吗?

如果这很重要,我们正在使用十六进制表示法读取/存储这些ID(如page_id = 0x1122334455667788)。 我们不会在查询中使用整数,因为我们正在编写PHP应用程序,并且您肯定知道,没有“unsigned long long int”类型,因此所有整数都是与机器相关的大小。

1 个答案:

答案 0 :(得分:2)

如果这符合您的设计,我会使用二进制文件(8)。

否则,在某些地方,您的性能或复杂性总会产生转换开销。 RDBMS级别的类型之间不会有太多(如果有的话)差异