02-MySQL优化系列之-你真的掌握了正确的建表方式吗

万丈高楼平地起,如何正确创建表非常重要,

而如何正确建表,在于如何正确选择合适的数据类型,所以今天我们来谈谈这个话题

说明下:因为发现把图表粘贴过来,显示的时候,格式有点乱,所以我采用截图的方式将图表贴到文章中

1,数据类型选择的原则

原则一:数据类型从小出发

通常情况下,应该选择可以正确存储数据的最小数据类型。

最小的数据类型意味占用更小的磁盘,内存和CPU缓存。

但是提醒一点,要正确估算存储的数据的取值范围,后期修改数据类型会是一个非常耗时的过程。

原则二:列避免出现NULL,一般设置为NOT NULL

通常情况下,列的值出现NULL,不利于MySQL做优化

2,数据类型选择详解

2.1 整数类型

02-MySQL优化系列之-你真的掌握了正确的建表方式吗

说明:

添加unsigned属性表示该字段不允许负数,正数的上限大致可以提高一倍。

比如tinyint unsigned可以存储0~255的范围。而tinyint是-128~127的范围。

有符号和无符号占用空间大小相同,具有相同的性能。

注意事项:

我们通常会见到一些客户端软件,给我们的创建的字段类型设置为int(11),其实,它不会限制值的合法范围,只是规定了MySQL的交互工具(客户端)用来显示字符的个数,对于存储和计算而言,int(1)和int(32)没什么区别

关键点:int(1)和int(32)没什么区别,这个误会,相信很多人都存在

2.2 浮点类型

浮点类型有float(32),double(64)

对于需要精确点计算的,不建议采用这两种类型。

那么对于通常我们的“金额”字段应该采用什么样的类型?

选择一:decimel需要额外的空间和计算开销,

所以应该尽量只对小数进行精准计算时才使用decimel。

选择二:采用整数类型,比如int或者bigint

关键点:对于金额字段,不能采用float或者double,因为精确度不够,可以采用decimel或者bigint

2.3 字符串类型

02-MySQL优化系列之-你真的掌握了正确的建表方式吗

关键点:要有选择性的选择varchar或者char,定长的情况下,通常推荐使用char

2.4 日期类型

02-MySQL优化系列之-你真的掌握了正确的建表方式吗

关键点:使用datetime范围更广,而timestamp则比较省空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值