MySQL引擎比较和数据类型优化

特性MyISAMInnoDBMEMOERYMERGENDB
存储限制64TB没有
事务安全支持
锁机制表锁行锁表锁表锁行锁
B-Tree索引支持支持支持支持支持
Hash索引支持支持
全文索引支持
集群索引支持
数据缓存支持支持支持
索引缓存支持支持支持支持支持
数据压缩支持
空间使用n/a
内存使用
批量插入速度
支持外键支持

数据类型优化

  • 更小的通常更好:可以正确存储数据的最小数据类型
  • 简单的数据类型就好
  • 尽量避免NULL

整数类型(单位为位,可选UNSIDNED)

TINYINTSMALLINTMEDIUMINTINTBIGINT
816243264

实数类型:TYPE(n,m)

FLOAT(32bits),DOUBLE(64bits),DECIMAL
DECIMAL:只是一种储存格式,计算时会换成DOUBLE。
浮点数存储不精确,而DECIMAL精确计算代价太高。
当数字不大但要求精度很高时,如要精确到百万分之一,可以将数字乘以一百万,并储存为BIGINT.

字符串类型

VARCHAR:可变长字符串,但额外花费1,2个字节记录字符串的长度。
CHAT:定长字符串,插入数据时会自动删除最后的所有空格。很适合MD5或者Y/N这种。
TEXT:字符方式存储,像INT家族一样有一大堆家族
BLOB:二进制方式存储,同上
ENUM(‘A’,’B’):也可以考虑枚举类型,类似与外键

时间和日期类型

DATETIME: YYYYMMDDHHMMSS, 8个字节,仅储存字符串
TIMESTAMP: 从1970/1/1以来的秒数,4个字节,会根据时区自动变化

位数据类型:最好避免使用

mysql> create table bittest(
    -> a bit(8));
Query OK, 0 rows affected (0.26 sec)

mysql> insert into bittest values
    -> (b'00111001');
Query OK, 1 row affected (0.03 sec)

mysql> select a,a+0 from bittest;
+------+------+
| a    | a+0  |
+------+------+
| 9    |   57 |
+------+------+
1 row in set (0.00 sec)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值