MYSQL基础03-优化数据库性能,从选择合理的数据类型开始
Mysql中常见的数据类型
选择恰当的数据类型,对于MYSQL服务器的性能影响至关重要,在建表根据自己的业务逻辑选择恰当的数据类型和数据长度,也是我们MYSQL查询优化的一种重要方式;
参考书籍:《高性能MYSQL》
数据类型选择的
1.数据类型选择遵守的原则
- 更小的通常更好(在正常存储数据的情况下,最小数据类型最好,可以提高性能)
- 尽量避免null
基础知识点
1.不同编码类型,存储数据的大小不一致。utf-8, 一个汉字3字节 英文字母1字节;
2.GBK存储,1个汉字2个字节,英文字母1个字节;
2.数字类型
1.整数类型
存储的值的范围在-2(n-1)到2(n-1)-1,其中n是存储空间的维数
类型 | 大小 | 特点 | 备注 |
---|---|---|---|
unsigned | 表示无符号的,表示不允许负值,可以让正数的大小扩大一倍 | ||
Zerofill 标记 | Int(4) | zerofill显示时不足4位会补0 | |
tinyint | 1字节,8位,大小在-128~127 | tinyint unsigned 大小编程了 0~255 | |
smallint | 2字节,16位 | ||
mediumint | 3字节,24位 | ||
int | 4字节,32位 | ||
bigint | 8字节,64位 |
2.实数类型
一般用域存储带小数点的。可以分为精确类型和不精确类型。
浮点类型
类型 | 大小 | 特点 | 备注 |
---|---|---|---|
FLOAT | 4字节 | ||
dobule | 8字节 |
精确类型
类型 | 大小 | 特点 | 备注 |
---|---|---|---|
decimal | 定点浮点型做精确运算 | ||
nemeric |
3. 字符串类型
分配的长度过多,会造成排序操作的性能损失
类型 | 大小 | 特点 | 备注 |
---|---|---|---|
varchar | 大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节 | 1.括号中给定的是最大长度 2.变长字符串,用于存储可变的长字符串,比定长更胜空间 3.容易产生碎片 |
具体和存储引擎有关 |
char | 最长不超过255个字节 | 1.定长字符串; 2.效率更高; 3.如果长度不足会补空格; 4.比较适合用来存储密码之类; |
可以用来存储是非性别值,因为只需要1个字节,varchar还需要额外的1个字节记录长度 |
text | 65535字节 | 保存字符串 有字符集和排序规则 |
mysql无法对全部长度的字符串索引 |
blob | 用来保存二进制字节数据 | mysql无法对全部长度的字符串索引 |
4. 日期和时间类型
类型 | 大小 | 特点 | 备注 |
---|---|---|---|
DATETIME | 包含最大范围的值,从1001-9999年,精度位秒 | 1.将日期封装进YYYYMMDDHHMMSS的正数据中,与时区无关,8个字节存储 | |
TIMESTAMP | 从1970年1月1日开始到2038年 | 1.修改一行数据时,第一个timestamp字段会自动更新为系统当前时间 2.不能取null值,填入null值时,就会自动填入当前系统时间; 3.空间效率更高 |
5.其他类型
位数据类型和选择标识符类型没用的比较少,大概了解一下;具体可以看《高性能MYSQL》相关章节知识
分类:
数据库
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏