数据表每个字段所占空间,需要计算出来.在设计表尽量少占用空间,这样在批量插入时单次插入的条数会增加.从而提高效率
类型 | 占用字节 |
---|---|
tinyint | 1个字节 |
smallint | 2个字节 |
mediumint | 3个字节 |
int | 4个字节 |
bigint | 8个字节 |
float | 4个字节 |
double | 8个字节 |
DECIMAL | 定义为DECIMAL(M,D) ?则占用 M 个字节 |
数据类型 | MySQL 5.6.4 之前所需的存储 | 从 MySQL 5.6.4 开始所需的存储 |
---|---|---|
YEAR | 1 字节 | 1 字节 |
DATE | 3 字节 | 3 字节 |
TIME | 3 字节 | 3 字节 + 秒小数部分存储 |
DATETIME | 8 字节 | 5 字节 + 秒小数部分存储 |
TIMESTAMP | 4 字节 | 4 字节 + 秒小数部分存储 |
从MySQL 5.6.4开始,YEAR和DATE的存储保持不变。但是,表示时间、日期时间和时间戳?不同。需要 5 个字节而不是 8 个字节 非分数部分,所有三个部分都有一个分数部分 这需要 0 到 3 个字节,具体取决于小数存储值的秒精度。
秒小数部分精度 | 所需存储 |
---|---|
0 | 0 字节 |
1, 2 | 1 字节 |
3, 4 | 2 字节 |
5, 6 | 3 字节 |
例如,TIME(0)、TIME(2)、TIME(4) 和?TIME(6)?使用 0、1、3、5 个字节, TIME 和?TIME(0)?是等价的,需要相同的存储。
那批量插入时一次多少条效率最高呢?