标签:
决定列的数据类型,我们应该遵循下面两步。
第一步、大致决定数据类型。——判断是数字,字符串还是时间等。这通常很直观。
第二步、确定特定的类型。
很多数据类型能够保存同类型的数据,但是我们要发现,他们在存储的范围,精度和物理空间之间的差别(磁盘或内存空间)。如:datetime和timestamp能保存同样类型的数据:日期和时间。——timestamp使用datetime一半的空间;能保存时区;拥有特殊的自动更新能力。
类型名称 | 占用位数 | 数据范围 |
TINYINT | 8 | -2^7 ~ 2^7-1 |
SMALLINT | 16 | -2^15~2^15-1 |
MEDIUMINT | 24 | -2^23~2^23-1 |
INT | 32 | -2^31~2^23-1 |
BIGINT | 64 | -2^63~2^63-1 |
2、unsigned属性表示不允许负数,并大致把正上限提高了一倍。如TINYINT UNSIGNED保存的范围为0到255而不是-127到128
3、MYSQL对整数类型定义宽度,比如int(1)和int(22)对于存储和计算是一样的。只规定了MYSQL的交互工具(如命令行客户端)用来显示字符的个数。
只分配真正需要的空间
使用varchar(5)和varchar(200)保存‘hello‘占用空间是一样的。——这里应该指的是磁盘上的空间。
那么使用较短列有何优势?——巨大的优势
较大的列会使用更多的内存,因为MySQL通常会分配固定大小的内存块(如varchar(200)会用200个字符大小的内存空间)来保存值(然后对值进行trim操作,最后放入磁盘)或取值。——这对排序或使用基于内存的临时表尤其不好。
咱们再看看varchar
在对enum列使用order by的时候,是按数字排序的,而不是字符串排序。
DATETIME:保存大范围的值。封装格式:YYYYMMDDHHMMSS。——与时区无关,使用8字节存储空间。
TIMESTAMP:保存自1970年1月1日午夜(格林尼治标准时间)以来的秒数。——使用4字节存储空间。
通常使用TIMESTAMP,它比DATETIME更节约空间。有时人们把Unix的时间戳保存为整数值,但是这通常没有任何好处。——这种格式处理起来不太方便,我们并不推荐它。
MySQL 请选择合适的列! 转载(http://www.cnblogs.com/baochuan/archive/2012/05/23/2513224.html)
标签:
原文地址:http://www.cnblogs.com/agang-php/p/5692752.html