参考文献:《高性能MySQL(第三版)》
1. 更优化的数据类型
(1)选择可以正确存储数据的最小数据类型。 因为它们占用更少的磁盘、内存和CPU缓冲,且处理时需要的CPU周期也更少。
(2)简单的数据类型。 因为简单数据类型的操作通常需要更少的CPU周期。eg:整型比字符型更好;使用MySQL内建的类型如date、datetime、time等而不是字符串来存储日期和时间;使用整型来存储IP地址而非字符串。
(3)尽量避免NULL。通常情况下最好指定列为NOT NULL。因为若查询中包含可以为NULL的列,对于MySQL对可为NULL列使用索引、索引统计和值比较都更复杂。

我们建表时选择数据类型参考上图的流程即可。
2. MySQL数据类型大致整理
我们开发中常用的MySQL数据类型整理如下:

在建表的过程中,我们可以根据不同数据类型的优缺点来进行选取,从而使得表的存储空间与性能达到最优。
3. 一些简单的设计原则
一些我们开发过程中值得借鉴的表设计原则总结:
避免过度设计,减少产生复杂查询的schema、多列表的设计
使用小而简单的合适数据类型,除非真实数据模型中有明确需要,否则尽可能避免使用null值,而应该给每个列设置一个默认0值
尽可能使用相同数据类型存储相似或相关的值,尤其是关联条件中使用的列
可变长字符串中尽可能按需设置字符串的长度
避免使用MySQL废弃的特性,例如指定浮点数的精度、整数的显示宽度等
希望每位Developer都能够好好设计表,减少被公司的DBA吐槽的机会
文章转载自小猪notebook,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【MySQL 30周年庆】MySQL 8.0 OCP考试限时免费!教你免费领考券
墨天轮小教习
2943次阅读
2025-04-25 18:53:11
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
严少安
850次阅读
2025-04-25 15:30:58
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
493次阅读
2025-04-17 17:02:24
MySQL 9.3 正式 GA,我却大失所望,新特性亮点与隐忧并存?
JiekeXu
430次阅读
2025-04-15 23:49:58
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
372次阅读
2025-04-15 14:48:05
MySQL 8.0 OCP 1Z0-908 考试解析指南(二)
JiekeXu
286次阅读
2025-04-30 17:37:37
记录MySQL数据库的一些奇怪的迁移需求!
陈举超
277次阅读
2025-04-15 15:27:53
SQL优化 - explain查看SQL执行计划(下)
金同学
267次阅读
2025-05-06 14:40:00
MySQL 8.0 OCP 1Z0-908 考试题解析指南
青年数据库学习互助会
248次阅读
2025-04-30 12:17:54
MySQL 30 周年庆!MySQL 8.4 认证免费考!这次是认真的。。。
数据库运维之道
230次阅读
2025-04-28 11:01:25