From 5568904826fbfba65a1e99104038cef61fe9936c Mon Sep 17 00:00:00 2001 From: vuyua9 <157298474@qq.com> Date: Sun, 24 May 2026 23:14:31 +0800 Subject: [PATCH] docs(mysql): clarify UNSIGNED storage requirements --- docs/high-performance/sql-optimization.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/high-performance/sql-optimization.md b/docs/high-performance/sql-optimization.md index e4c9e24c09f..45304fa49fc 100644 --- a/docs/high-performance/sql-optimization.md +++ b/docs/high-performance/sql-optimization.md @@ -94,13 +94,15 @@ MySQL 提供了两个方法来处理 ip 地址 **b.对于非负型的数据 (如自增 ID,整型 IP,年龄) 来说,要优先使用无符号整型来存储。** -无符号相对于有符号可以多出一倍的存储空间 +无符号不会改变整数类型占用的存储字节数,只是把可表示范围从包含负数改为从 0 开始的非负范围;例如 `INT` 无论 signed 还是 unsigned 都占用 4 字节,范围分别如下: ```sql SIGNED INT -2147483648~2147483647 UNSIGNED INT 0~4294967295 ``` +具体存储字节数和取值范围可参考 MySQL 官方文档:[Integer Types](https://dev.mysql.com/doc/refman/8.0/en/integer-types.html) 和 [Data Type Storage Requirements](https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html)。 + **c.小数值类型(比如年龄、状态表示如 0/1)优先使用 TINYINT 类型。** **d.对于日期类型来说, 一定不要用字符串存储日期。可以考虑 DATETIME、TIMESTAMP 和 数值型时间戳。**