Mysql优化之字段设计篇

字段设计

1. 存储IP地址

常规做法: varchar(15)
优化选择:int unsigned,占用4个字节,节省空间,IP运算速度块
以MySQL为例:
inet_aton;
inet_ntoa;
a—address,n----number
在这里插入图片描述
在这里插入图片描述

2. 原则:尽量使用整数去表示字符串

整型的优势:
存储空间固定。往往是少量空间
运算速度块
例如:
MySQL 内部的枚举(单选)类型和集合(多选)类型
但是,实操的时候enum和set很少用
原因:维护成本高
使用的替代方案:关联表

3. 存储金额

金额,价格,统计数据的存储。
对数据的精度要求高
典型方法:price decimal(8,2);定点数,有两位小数的定点数。
还有一个方案:price int ,bigint,整数,小单位,大数额。整数的运算是没有精度问题的(只有小数的运算和存储才有精度问题,因为在计算机中,不能将小数完全转换为二进制)
注意:定点数,支持很大的数,
专程小单位后,整数存储不了!

4. 原则:定长数据类型和变长数据类型的选择

例如:定点数和浮点数的选择

定点数:不会精度丢失。 占用空间随者数字的增加而增加
浮点数:导致精度丢失 。占用固定的存储空间,无论存储多大的数据,占用的空间是固定的(类似于int)
定长类型:存储空间固定:int,float,double.char,date,time,datetime,year,timestamp
变长类型:存储空间可变:varchar,decimal,text

5. 字符串类型的选择

varchar,
char,占用字段的中空间,字段的总空间是有限的,默认是65535Byes
text,类型独立存储,不占用字段总空间
字符串类型的存储需求;
在这里插入图片描述

6. 原则:尽可能选择显得数据类型

7. 原则:尽可能使用not null

非空字段的处理要比null字段的处理效率更高
不需要判断是否为null
null在MySQL中,不好处理,存储需要额外的空间,运算也需要特殊的运算符
null参与常规运算,结构就是null
在这里插入图片描述
除非使用is null is not null

存储如何存储?
MySQL中每条记录会使用额外的存储空间,表示每个字段是否为null

使用一个特殊的数据,进行占位
int not null defa ult -l
string not null default
但会产生逻辑上的歧义,尽量使用不会出现在常规业务中的数据作为默认,表示null数据

8. 原则:字段注释完整

gender int comment‘性别’

9. 原则:字段名具有逻辑含义

gender int comment’性别’

10. 原则:单张字段数量不亦过多

二三十就是极限
一旦过多,就会出现,某个业务逻辑仅仅使用一部分字段的情况

11. 原则:可以预留字段

id
name
gender
information
预留字段
field1 int
field2 varchar
field3 varchar
当前没有作用,为了后期业务逻辑设计改变时,快速修改表结构

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值