4. Schema与数据类型优化

4.1.1 整数类型

有两种类型的数字:整数和实数。

TINYINT 8位

SMALLINT 16位

MEDIUMINT 24位

INT 32位

BIGINT 64位

注意: int(11) 不会限制值得合法范围,只是规定了mySQL的交互工具显示字符个数,对于存储和计算来说, INT(1) INT(20)是相同的。

4.1.2 实数类型

实数是带有小数部分的数字。

4.1.3 字符串类型

varchar:可变长字符串,比定长类型更节省空间,因为它仅使用必要的空间。

char: 定长,char非常适合存储密码的md5值,因为是一个定长值,不容器产生碎片,对于非常短的值,CHAR比VARCHAR在存储空间上也更有效率。

例如:CHAR(1)存储Y和N的值,只需要一个字节,VARCHAR(1)需要两个字节。

4.1.4 日期和时间类型

TIMESTAMP 比 DATETIME范围小,只能1970-2038.

除特殊情况,通常尽量使用TIMESTAMP,因为它比DATETIME空间效率更高。

4.1.5 位数据类型

BIT

SET

4.1.6 选择标识符

4.1.7 特殊类型数据

4.2 MySQL schema设计中的陷阱

太多的列

太多的关联

全能的枚举

变相的枚举

4.3 范式和反范式

4.3.1 范式的优点和缺点

优点:

更新比反范式快

很少或者没有重复数据

表通常更小

更少需要DISTINCT或者GROUP BY

缺点

需要关联

4.3.2 反范式的优点和缺点

优点:

避免关联

数据比内存大时,比关联要快得多,因为避免了随机 I/O.

单表更有效的使用索引策略

缺点:

更新起来比较麻烦,数据不一致。

备注:权标扫描基础上是顺序I/O,但不全是,跟引擎的实现有关。

4.3.3 混用范式化和反范式化

4.4 缓存表和汇总表

4.4.1 物化视图

Flexviews

4.4.2 计数器表

4.5 加快 ALTER TABLE 操作的速度

4.5.1 只修改 .frm 文件

4.5.2 快速创建MyISAM索引

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值