utf-8格式中如果字符小于15个优选char类型,否则选择varchar类型;
decimal用于存储精确数字,float用于存储非精确数字。
6
时间类型:
1、使用int:
优点:字段长度比datetime小;
缺点:使用不方便,需函数转换;
(1)生日不常用的int;
(2)下单时间、支付时间经常用的用datatime;
限制:int4个字节,智能存储到2038-1-19- 11:14:07
2、需要存储的颗粒度
年(year类型一个字节)、月、日、时、分、秒、周
decimal和float的选择:
1、精确数控用decimal;
2、非精确优先选择float(由于float的存储空间开销一般比decimal小)
decimal列的声明语法是decimal(m,d)。
在mysql 5.1中,参数的取值范围:
1、M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254)。
2、D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。
char和varchar的选择:
1、数据字段长度一样(比如手机号码、证件号码)考虑用char否则用varchar;
2、数据长度小于50字节用char(如果改列很少用,则基于节省空间和减少I/O 的考虑,还是用varchar)
3、避免定于大于50字节的char类型;
时间类型如何存储
1. int的优缺点:
优点:字段长度比datetime小
缺点:使用不方便,需要进行函数转换
限制:只能存储到2038-1-19
2. 根据存储的时间粒度来选择:年月日小时分秒周
如何选择:
int用来存不常查询的数据,如生日,只是做一个记录
datetime用来存经常查询,常用的数据
decimal和float如何选
decimal用于存储精确数据,float只能用于存储非精确数据
float的存储开销一般比decimal小
char和varchar如何选
如果列中的数据长度差不多一致的,选char,如身份证号码,手机号;
如果列中的最大数据长度小于50byte,一般选char(Utf-8一个字符占3byte)。但如果列很少用,基于节省空间和减少IO的考虑,可以选varchar;
一般不宜定义大于50byte的char类型
时间类型如何存储?
1. 使用int来存储时间字段的优缺点
优点:字段长度比datetime小。
缺点:使用不方便,要进行函数转换。故在需要经常查询(如订单日期)不适合用int存储。
限制:只能存储到2038-1-19 11:14:07即2^32为2147483648
2. 需要存储的时间粒度
年 月 日 小时 分 秒 周
decimal与float如何选择?
原则:
decimal用于存储精确数据,而float只能用于存储非精确数据。故精确数据只能选择用decimal类型。
由于float的存储空间开销一般比decimal小(精确到7位小数只需要4个字节,而精确到15位小数只需要8字节),故非精确数据优先选择float类型。
char与varchar如何选择?
原则:
如果列中存储的数据长度擦汗不多时一致的,则应该考虑用char;否则应该考虑用varchar。
如果列中的最大数据长度小于50Byte,则一般也考虑用char。(当然,如果这个列很少用,则基于节省空间和减少I/O的考虑,还是可以训责用varchar)
一般不宜定义大于50Byte的char类型列。
int四个字节,datatime八个字节;
int有函数转换的麻烦,如果常使用(如查询)还是推荐datetime。
例子:生日一般只在用户查询信息时展示,比较少用,可以用int。订单时间常用所以用datetime
int有最大限制,其对应2038年1月19号。
数据粒度考虑:只需要年的时候,采用页类型(什么意思)?
utf-8,3个字节。
decimal精确数据;float非精确数据,存储空间开销小
varchar变长数据类型,需要额外的字节存储边长的字眼?
varchar存储除数据本身外,还要存储一些其他信息,比如数据起止位置。小于50字节还是用char好,但是如果这个字段本身很少值,那就用varchar。
decimal用于存储精确数据,float存储非精确数据。float存储开销一般比decimal小。
datetimer占用8个字节,int占用4个字节,如果查询频率比较低的场景可优先选着int类型存储,不考虑转化效率的情况
低于50Byte个字节的数据尽量不要选着varchar类型
字段类型的选择原则
时间类型如何存储
decimal与float如何选择
char与varchar如何选择
使用utf8是,50byte/3 ~=16,char不宜定义大于16的
decimal与float选择原则:
decimal用于存储精确数据,而float只能用于存储非精确数据。故精确数据只能选择用decimal类型
由于float的存储空间开销一般比decimal小(精确到7为小数只需要4个字节,而精确到15位小数只能需要8字节)故非精确数据优先选择float类型
char与varchar选择的原则:
如果列中要存储的数据长度差不多是一致的,则应该考虑用char; 否则应该考虑varchar
如果列中的最大数据长度小于50Byte, 则一般也考虑用char。(当然,如果这个列很少用,则基于节省空间和减少I/O的考虑,还是可以选择用varchar)
一般不宜定义大于50Byte的char类型列
时间类型如何存储
decimal与float如何选择
char与varchar如何选择