MYSQL(三)数据类型的优化选择
admin
2023-02-06 22:00:08
0

整数类型:

Tinyint-8

Smallint-16

Mediumint-24

Int-32

Bigint-64


实数类型(带有小数部分的数字)

Float-4/double-8:浮点

Decimal:精确(只是存储格式,在计算中会转为double类型)

浮点类型在存储同样范围的值时,通常比decimal使用更少的空间。


字符串类型:

Varchar:可变长字符串(需要1-2个字节存储字符串长度)

优点:比定长类型节约空间;

缺点:碎片问题。字符串update变长时,一个行的占用空间变长,但是在页内没有更多空间存储,MYISAM将行拆成不同片段存储,InnoDB分裂页使行可以放进页内;

适用:字符串最大长度比平均长度大很多;列的更新很少;

Char:定长字符串(mysql会删除所有末尾空格)

优点:不易产生碎片

适用:存储密码的MD5值;经常变更的数据;


大型数据类型:

Blob:二进制

Text:字符

特殊性:mysql将blob和text值当做一个独立的对象处理,当值太大时,innodb在值内存储一个指针,外部存储区域存储实际的值;mysql对blob和text的排序,只对每列的最前max_sort_length进行排序;mysql不能将列的全部长度字符串进行索引,也不能使用这些索引进行排序;


枚举类型ENUM:

mysql在存储枚举类型时非常紧凑;

Mysql在内部会将每个值在列表中的位置保存为整数,并且在表的.frm文件中保存“数字-字符串”的映射关系的查找表;

缺点:字符串列表是固定的,添加或删除字符串都需要alter table;

优点:可以缩小表的大小;主键减小后,innodb表的非主键索引也会变小;

关联速度:enum列 关联 enum列  >  varchar列 关联 varchar列  >  enum列 关联 varchar列


日期时间类型:

Datetime:8字节;与时区无关;保存大范围的值,从1001年到9999年,精度为秒;

Timestamp(尽量使用):4字节;依赖于时区;保存1970.1.1以来的秒数;列默认为not null;


Timestamp的特殊性:如果插入数据时没有指定第一个timestamp列的值,mysql则设置这个值为当前时间;


相关内容

热门资讯

最新引进“科尔沁麻将开挂神器?... 最新引进“科尔沁麻将开挂神器?”(其实是有挂)您好,科尔沁麻将这个游戏其实有挂的,确实是有挂的,需要...
终于了解“夏天yy到底是不是挂... 家人们!今天小编来为大家解答夏天yy透视挂怎么安装这个问题咨询软件客服徽4282891的挂在哪里买很...
终于明白“欢乐划水麻将辅助器?... 您好:欢乐划水麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家在这款...
【第一财经】“新蜜瓜大厅拼三张... 【第一财经】“新蜜瓜大厅拼三张怎么开挂?”(果然有透视挂)您好,新蜜瓜大厅拼三张这个游戏其实有挂的,...
终于了解“天天斗地主到底是不是... 有 亲,根据资深记者爆料天天斗地主是可以开挂的,确实有挂(咨询软件无需打...
我来教教您“新蛮王牛牛到底是不... 网上科普关于“新蛮王牛牛有没有挂”话题很是火热,小编也是针对新蛮王牛牛作*弊开挂的方法以及开挂对应的...
【第一财经】“新蜜瓜拼十怎么装... 有 亲,根据资深记者爆料新蜜瓜拼十是可以开挂的,确实有挂(咨询软件无需打...
【今日要闻】“聚友茶楼开挂器?... 网上科普关于“聚友茶楼有没有挂”话题很是火热,小编也是针对聚友茶楼作*弊开挂的方法以及开挂对应的知识...
今日重大发现“聚友互娱怎么开挂... 有 亲,根据资深记者爆料聚友互娱是可以开挂的,确实有挂(咨询软件无需打开...
【今日要闻】“西南九九开挂神器... 【今日要闻】“西南九九开挂神器?”(外卦神器下载)您好,西南九九这个游戏其实有挂的,确实是有挂的,需...