数据表物理设计精彩讲解

物理设计

定义数据库、表及字段的命名规范
1、命名遵守可读性
2、表意性原则
3、长名原则

选择合适的存储引擎

这里写图片描述
通常情况下,请选用innodb做为存储引擎。
innodb主键需要考虑:
(1)主键应尽可能的小—提升索引效率
(2)主键应该是顺序增长得—增加数据的插入效率,减少随机IO生成。
(3)innodb的主键和业务主键可以不同
表中的字段选择合适的数据类型
当一个列可以选择多种数据类型时,应该优先数字类型,其次是日期或二进制类型,最后是字符类型。对于相同级别的数据类型,应该优先选择占用空间小的数据类型
——–>如何选择正确的整数类型
这里写图片描述
值得提下,有的程序员设置为Int为2宽度,以为是只占2宽度,其实是没有任何意义的,还是占有4个字节

——–>如何选择正确的实数类型
这里写图片描述
若是财务则需要非常精确的类型decimal,其他考虑使用float和double类型

如何选择VARCHAR和CHAR类型
1、varchar用于存储变长字符串,只占用必须的存储空间
2、列的最大长度小于255则占用一个额外字节用于记录字符串长度
3、列的最大长度大于255则要占用两个额外字节用于记录字符串长度

varchar长度的选择
1、使用最小的符合需求的长度
2、尽量避免在正式环境下修改长度,因为会引起锁表,对业务影响会很大。

varchar适用场景
1、字符列的最大长度比平均长度大很多
2、字符串列很少被更新
3、使用了多字节字符存储字符串

CHAR特点
1、CHAR类型是定长
2、字符串存储在CHAR类型的列中会删除末尾的空格
3、CHAR类型最大宽度为255

CHAR场景
存储的长度近似(MD5、身份证)
适合短字符串(男\女–char(1)比vchar好,在UTF8为例,char需要3个字节,而vchar则需要4个字节)
经常更新的字符串(减少存储碎片)

如何选择存储日期数据

mysql5.7以后会有如下两个类型:date类型和time类型; 存储用户生日时,只需要存储日期部分选择date。

使用date类型优点据
1、占用字节数比使用字符串、datetime、int存储要少,使用date类型只需要3个字节
2、使用date类型还可以利用日期时间函数进行日期之间的计算
time用于存储时间数据,格式为HH:MM:SS

存储日期时间数据主要事项
1、千万不要使用字符串类型来存储日期时间
日期时间类型通常比字符串占用的空间小,日期时间类型在进行查找过滤时可以利用日期来进行对比
日期时间类型还有丰富的处理函数,可以方便进行日期计算。
2、使用int存储日期时间不如使用Timestamp类型(时间戳存储),Timestamp比int资源占用更少。

Datatime类型
两部分组成 日期和时间,该类型与时区无关,占用8个字节存储。

Timestamp
存储的是时间戳,以YYYY-MM-DD HH:MM:SS显示 占用4个字节,Timestamp依赖指定的时区,在行的数据修改时可以自动修改timestamp的值

发布了57 篇原创文章 · 获赞 76 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/zhang5207892/article/details/79261095