选择优化的数据类型
- 更小的通常更好
- 一般情况下,应该使用正确存储数据的最小类型
- 因为占用的内存、磁盘、cpu资源更少
- 简单就好
- 简单的数据类型需要的CPU周期更少,例如操作整型比操作字符代价更低
- 尽量避免
NULL,如果不是特别的需要null值,一般设为不为空,因为mysql对null的索引比较复杂
- datetime和timestamp都可以存储时间,精确到秒。但是timestamp只是用datetime的一半存储空间,而且会根据时区变化,具有特殊的自动更新能力
整数类型
- tinyint(8位)
- smallint(16位)
- mediumint(24位)
- int(32位)
- bigint(64位)
- 数据范围```-2^(N-1)~2^(N-1)
- 整数计算一般使用bigint
- 对于存储和计算来说int(1)和int(20)没有区别
实数类型
- 实数是带有小数部分的数字
- float、double(可以指定数据宽度:double(18,9)表示数据一共18位,小数点后面保留9位),但是要避免指定数据精度,mysql已经抛弃了指定浮点数精度与整数显示宽度的特性,虽然还可以继续使用,但是最好不要使用mysql抛弃的这些特性。
- decimal支持精确计算,可以存储比bigint还大的数据。但是cpu不支持decimal的计算(由算法解决),cpu原生支持浮点运算
字符串类型
varchar
- 用于存储变长的字符
- 会额外使用1或2个空间记录字符串的长度
- 字符长度大于255个时,使用2个空间记录,否则使用1个
char
- 存储定长的字符
- char格式会删除字符后面的空格,但前面的不会,例如输入ABC__,但是只会输出ABC。但是varchar会保留原有格式
- 对于定长的数据,无论它是固定的还是会变化的,只要长度固定就使用char,例如MD5加密后额密码,定长的char不容易产生碎片
- 存储
Y这个字母,char需要1个空间,varchar需要2个
binary和varbinary
- 用来存储二进制字符串
- 二进制字符串存储的是字节码不是字符
注意
- 若存储
HELLO,使用varchar(6)比使用varchar(200)更好。
- 最好的策略是只分配真正需要的空间
混合使用范式与反范式
- 范式的优点:操作速度更快、减少数据重复、表占用空间小、数据冗余小
- 范式的缺点:常常需要关联
- 反范式的优点:避免关联
- 反范式的缺点:最差的时候要全表扫描
posted @
2020-12-30 17:34
Tracydzf
阅读(
105)
评论()
收藏
举报