在 SQL 上存储 XUID 的最有效方法是什么?
What's the most efficient way to store XUIDs on SQL?
官方 Xbox Auth 文档将 XUID 称为无符号 int64,因此,我希望 SQL 等价物 BIGINT 是将其存储在 MySQL 数据库中的最有效方式.
但是,我发现许多程序员将 XUID 作为 VARCHAR(20) 存储在他们的数据库中,经过一些研究,这些是我发现这些数据类型之间的主要区别:
- VARCHAR(20) 使用最多 21 个字节(取决于文本的长度)
- BIGINT 始终使用 8 个字节,与文本长度无关。
这就是我想到这个问题的方式,在 SQL 上存储 XUID 的最有效方法是什么?
如果 XUID 是 64 位无符号整数,那么它的值可以从 0 到 18,446,744,073,709,551,615。所以 VARCHAR(10)
不够大;你需要使用 VARCHAR(20)
.
将其存储为BIGINT UNSIGNED
(总是eight bytes)比VARCHAR(20)
(最多 21 个字节,具体取决于要存储的数字的大小,假设为该列设置了一个每个数字一个字节的字符集。
官方 Xbox Auth 文档将 XUID 称为无符号 int64,因此,我希望 SQL 等价物 BIGINT 是将其存储在 MySQL 数据库中的最有效方式.
但是,我发现许多程序员将 XUID 作为 VARCHAR(20) 存储在他们的数据库中,经过一些研究,这些是我发现这些数据类型之间的主要区别:
- VARCHAR(20) 使用最多 21 个字节(取决于文本的长度)
- BIGINT 始终使用 8 个字节,与文本长度无关。
这就是我想到这个问题的方式,在 SQL 上存储 XUID 的最有效方法是什么?
如果 XUID 是 64 位无符号整数,那么它的值可以从 0 到 18,446,744,073,709,551,615。所以 VARCHAR(10)
不够大;你需要使用 VARCHAR(20)
.
将其存储为BIGINT UNSIGNED
(总是eight bytes)比VARCHAR(20)
(最多 21 个字节,具体取决于要存储的数字的大小,假设为该列设置了一个每个数字一个字节的字符集。