mysql - MySQL中的十进制VS整数?

标签 mysql performance

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/

相关文章:

php - 从Mysql中抓取结果,将链接内容转换为XML,然后输出

mysql - 使用 group by 或 distinct 时如何排序结果?

mysql - 优化从同一个表中提取的多列的查询

c++ - Boost::multi_array 性能问题

mysql - 按 SQL 查询排序

javascript - Webpack 使用大型 ES6 模块构建性能缓慢

sql - 优化查询以删除 "Using where; Using temporary; Using filesort"

php - 期望 SELECT COUNT(DISTINCT country) 返回 46 但只得到 1

c++ - 如何快速评估零集?

java - WebLogic 的 HttpURLConnection 实现性能不佳