Gle*_*raw 7 mysql database-design optimization
我正在尝试存储大量在存储为INT值时会被截断的大数。不幸的是,它们对于这种类型来说太大了。
INT
我正在考虑使用Base36编码来实现这一点。有没有其他方法可以解决这个问题?
Dan*_* Li 13
通常情况下,Base36编码会导致精度损失,因为基数转换过程需要浮点数运算。这不仅会在转换为 和来自 时损坏您的数据,而且Base36您还将消耗更多空间(INT占用 4 个字节,许多Base36接近 32 位无符号整数限制的编码整数将占用更多空间)。
Base36
有关精度损失的详细解释,请参阅PHP 的文档。
答:您应该使用BIGINT进行操作。
ype*_*eᵀᴹ 8
你可以使用,
大于INT, 整数BIGINT数据类型:
BIGINT
BIGINT UNSIGNED: 值从0up 到2^64-1(about 18 * 10^18)
BIGINT UNSIGNED
0
2^64-1
18 * 10^18
BIGINT SIGNED: 值从-2^63up to 2^63-1(about -9 * 10^18to 9 * 10^18)
BIGINT SIGNED
-2^63
2^63-1
-9 * 10^18
9 * 10^18
或定点NUMERIC(也称为DECIMAL)数据类型:
NUMERIC
DECIMAL
DECIMAL(M, 0): 值从 -(10^M-1)到10^M+1
DECIMAL(M, 0)
-(10^M-1)
10^M+1
该M可以达到65,所以你可以存储整数多达65个十进制数字。
M
65
归档时间:
13 年,2 月 前
查看次数:
713 次
最近记录:
13 年 前