当前位置: 首页 > news >正文

MySQL 整型数据类型:选对数字类型,让存储效率翻倍

MySQL 整型数据类型:选对数字类型,让存储效率翻倍

在 MySQL 中,整型(整数类型)是最常用的数据类型之一,从用户 ID 到商品数量,几乎所有涉及数字的场景都离不开它。但你知道吗?选对整型类型不仅能节省存储空间,还能提升查询性能。今天就用最通俗的方式,带你搞懂 MySQL 整型的核心知识。

一、5 种整型类型,一张表讲清区别

MySQL 提供了 5 种基础整型类型,核心区别在于占用字节数表示范围,直接决定了能存储的数字大小:

类型占用字节有符号范围(默认)无符号范围(UNSIGNED)典型场景
TINYINT1 字节-128 ~ 1270 ~ 255状态值(0/1/2)、性别
SMALLINT2 字节-32768 ~ 327670 ~ 65535小数量(如评论数)
MEDIUMINT3 字节-8388608 ~ 83886070 ~ 16777215中等规模 ID(如文章 ID)
INT4 字节-2147483648 ~ 21474836470 ~ 4294967295普通 ID(用户 ID、订单号)
BIGINT8 字节-9e18 ~ 9e180 ~ 1.8e19大数量(如海量数据 ID)

二、核心用法:3 个必须掌握的知识点

1. 无符号(UNSIGNED):让正数范围翻倍

默认情况下,整型是 “有符号” 的(可存正负值),但如果确定数值不会为负(如 ID、数量),可加UNSIGNED关键字,让正数范围翻倍:

-- 无符号TINYINT,范围0~255(比有符号的0~127多一倍)
CREATE TABLE products (stock TINYINT UNSIGNED  -- 库存不可能为负,用无符号更合理
);

2. 零填充(ZEROFILL):补零显示,不影响存储

加ZEROFILL会在查询时用 0 补全到定义长度(仅影响显示,不改变实际存储值):

CREATE TABLE scores (rank INT(5) ZEROFILL  -- 定义长度5,显示时不足补0
);INSERT INTO scores (rank) VALUES (3);  -- 存储为3,查询显示"00003"

⚠️ 注意:ZEROFILL会自动隐式添加UNSIGNED,不能存负数。

3. 自增(AUTO_INCREMENT):主键的最佳拍档

整型 +AUTO_INCREMENT是生成唯一 ID 的经典组合,通常搭配PRIMARY KEY使用:

CREATE TABLE users (id INT PRIMARY KEY AUTO_INCREMENT,  -- 自动生成1,2,3...name VARCHAR(50)
);-- 插入时无需指定id,会自动递增
INSERT INTO users (name) VALUES ('张三'), ('李四');

💡 建议:自增主键优先用INT(足够多数场景),超 40 亿数据再用BIGINT。

三、选型原则:记住这 2 条,避免 90% 的坑

  1. 够用就好,别贪大

比如存储 “性别”(0 = 未知,1 = 男,2 = 女),用TINYINT(1 字节)足够,没必要用INT(4 字节),浪费 3 倍空间。

  1. 预留扩展,但别过度

比如预估用户量最多 100 万,INT(最大 42 亿)完全够用,没必要一上来就用BIGINT(8 字节)。

四、常见误区:别被 “显示长度” 误导

定义整型时可以加数字,比如INT(10),但这不是存储范围,只是 “显示宽度”:

  • INT(3)和INT(10)存储范围完全一样(都是 4 字节,-21 亿~21 亿)

  • 仅当配合ZEROFILL时,才会影响显示(如INT(3) ZEROFILL存 5 会显示 “005”)

所以,别纠结INT(5)还是INT(10),根据范围选INT/BIGINT等类型即可。

总结

MySQL 整型的核心是 “按范围选类型”:小范围用TINYINT/SMALLINT省空间,普通场景用INT,海量数据用BIGINT。记住:合适的类型 = 更少的存储 + 更快的查询,这就是整型优化的精髓。


文章转载自:

http://f5Fah0e4.bpLqh.cn
http://WlYF8zLj.bpLqh.cn
http://dbs6oXUo.bpLqh.cn
http://RWDBiFhp.bpLqh.cn
http://mUVx0Z19.bpLqh.cn
http://ZK0OB5oY.bpLqh.cn
http://61CagEa2.bpLqh.cn
http://sn0OfFoq.bpLqh.cn
http://eowbeXbV.bpLqh.cn
http://qAaJOBh0.bpLqh.cn
http://1jTtC5rU.bpLqh.cn
http://7xHMSD7d.bpLqh.cn
http://T7ElhQCu.bpLqh.cn
http://05lYfccy.bpLqh.cn
http://VXNYm3Rr.bpLqh.cn
http://arSqRvl1.bpLqh.cn
http://XoXJvG36.bpLqh.cn
http://3er9QABk.bpLqh.cn
http://UKzb0xVT.bpLqh.cn
http://hlxIOCcX.bpLqh.cn
http://zxxXaRhG.bpLqh.cn
http://EoyTv4lS.bpLqh.cn
http://S7iUp5xQ.bpLqh.cn
http://UEUittS4.bpLqh.cn
http://Q5mBFInI.bpLqh.cn
http://D0uWlhgj.bpLqh.cn
http://Cxk54X2L.bpLqh.cn
http://Df5ktTks.bpLqh.cn
http://spBIKgQp.bpLqh.cn
http://orGt3N0s.bpLqh.cn
http://www.dtcms.com/a/376828.html

相关文章:

  • OpenCV的图像金字塔
  • PMP考试学习计划与知识大纲
  • 自然语言处理开源框架全面分析
  • antd v5 support React is 16 ~ 18. see https://u.ant.design/v5-for-19 for...
  • 【硬件-笔试面试题-82】硬件/电子工程师,笔试面试题(知识点:讲讲单片机的内部晶振与外部晶振)
  • 【计算机网络 | 第12篇】网络应用原理
  • 【竞赛系列】机器学习实操项目05——客户信用评估模型进阶流程(含XGBoost、LightGBM、CatBoost 高级模型对比与参数优化)
  • 机器学习的本质:从跑模型到真正解决问题
  • LeakCanary最新稳定版
  • 个人博客系统-测试报告
  • 生活中的各种造型 参考多图
  • 独家 | 抖音生活服务调整:涂晴接管市场和达人运营,旭凯担任北部大区负责人
  • Spring Bean扫描
  • 第2讲 机器学习 - 导论
  • 【开题答辩全过程】以 基于Android的智慧旅游APP开发为例,包含答辩的问题和答案
  • Linux服务器的系统安全强化超详细教程
  • Dockerfile构建容器需要注意的事项。
  • YOLO 发展前景与创新点
  • 一个基于 .NET 开源、轻便的 Windows 优化工具,适用于 Win7 - Win11 最新版的优化!
  • RL【7-1】:Temporal-difference Learning
  • child_process 和 cluster的区别
  • 第十七篇|优尼塔斯东京校区的教育数据工程:学费函数、国籍网络与升学有向图
  • ES6 面试题及详细答案 80题 (33-40)-- Symbol与集合数据结构
  • DeepResearch(上)
  • 即时通讯小程序
  • Firefox Window 开发详解(二)
  • Chrome性能黑魔法:深入浅出PGO优化与实战指南
  • 【算法专题训练】20、LRU 缓存
  • 66. 加一 (编程基础0到1)(Leetcode)
  • 多任务相关概念