选择数据类型
选择正确的数据类型,对于提高性能至关重要。
下面给出几种原则,有利于帮助你选择何种类型。
1、更小通常更好。
使用最小的数据类型。——更少的磁盘空间,内存和CPU缓存。而且需要的CPU的周期也更少。
2、简单就好。
整数代价小于字符。——因为字符集和排序规则使字符比较更复杂。
1>mysql内建类型(如timestamp,date)优于使用字符串保存。
2>使用整数保存ip地址。
3、尽量避免NULL——如果计划对列进行索引,尽量避免把列设置为NULL
尽可能把字段定义为NOT NULL。——可以放置一个默认值,如‘',0,特殊字符串。
原因:
(1)MYSQL难以优化NULL列。NULL列会使索引,索引统计和值更加复杂。
(2)NULL列需要更多的存储空间,还需要在MYSQL内部进行特殊处理。
(3)NULL列加索引,每条记录都需要一个额外的字节,还导致MyISAM中固定大小的索引变成可变大小的索引。
决定列的数据类型,我们应该遵循下面两步。
第一步、大致决定数据类型。——判断是数字,字符串还是时间等。这通常很直观。
第二步、确定特定的类型。
很多数据类型能够保存同类型的数据,但是我们要发现,他们在存储的范围,精度和物理空间之间的差别(磁盘或内存空间)。如:datetime和timestamp能保存同样类型的数据:日期和时间。——timestamp使用datetime一半的空间;能保存时区;拥有特殊的自动更新能力。