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

Ita*_*Ale 5 mysql binary-data

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

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

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

gbn*_*gbn 2

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

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