decimal(10,0) unsigned
类型和 int(10) unsigned
类型之间是否存在任何性能差异?
最佳答案
这可能取决于您使用的 MySQL 版本。见 here .
在 MySQL 5.0.3 之前,DECIMAL 类型存储为字符串,通常速度较慢。 但是,由于 MySQL 5.0.3 的 DECIMAL 类型是以二进制格式存储的,所以你的 DECIMAL 的大小在上面,性能上可能没有太大差异。
主要的性能问题是不同类型占用的空间量(DECIMAL 速度较慢)。对于 MySQL 5.0.3+,这似乎不是一个问题,但是如果您将作为查询的一部分对值执行数字计算,则可能存在一些性能差异。这可能值得测试,因为我可以看到文档中没有任何指示。
编辑:
关于 int(10) unsigned
,我认为这只是一个 4 字节的 int。然而,它的最大值为 4294967295,它严格来说不提供与 DECIMAL(10,0) unsigned
相同的数字范围。
正如@Unreason 指出的那样,您需要使用 bigint
来覆盖 10 位数字的全部范围,从而将大小增加到 8 个字节。
一个常见的错误是,在 MySQL 中指定数字列类型时,人们通常认为括号中的数字会影响他们可以存储的数字的大小。它没有。数字范围纯粹基于列类型以及它是有符号还是无符号。括号中的数字用于在结果中显示,对存储在列中的值没有影响。除非您在列上也指定 ZEROFILL
选项,否则它也不会影响结果的显示。
关于mysql - MySQL中的十进制VS整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2682115/