MySQL数据类型优化设计

来源:互联网 发布:雉兔同笼编程 编辑:程序博客网 时间:2024/05/28 04:54

我们在优化数据库表的数据类型时,基本遵循以下三个原则:

①更小的通常更好

我们应该使用更合适的最小的数据类型

②简单就好

简单的数据类型通常需要更少的CPU周期,例如:整型的效率是优于字符操作

③避免有null值存在

查询中包含可为null的列,对于MySQL来说更难优化.有null值的列使得索引,索引统计,值都更加复杂.

所以如果在本列加入索引,则本列应该加入not null的限制条件.


除了以上三个原则,我们还应该选用合适的数据类型,MySQL的数据类型分为以下几种:

1.整数类型

有TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT五种类型,分别使用8,16,24,32,64位的存储空间.对应1,2,3,4,8个字节

例如:TINYINT的可存储范围是:-128~127.

另外MySQL可以为整型设定宽度,如INT(11),但是它不会限制值的合法范围,只是规定了一些客户端用来显示的个数.对于存储和计算来说,INT(1)和INT(11)是相同的.

2.实数类型

实数带有小数部分,我们也可以使用Decimal来存储比BIGINT更大的值.FLOAT使用4个字节,DOUBLE使用8个字节,DECIMAL可以自己设定长度,最多可以使用65个数字.

3.字符串类型

VARCHAR和CHAR

其中VARCHAR是可变的,他需要使用1或者2个字节来记录字符串的长度.例如:VARCHAR(10)就需要使用11个字节来存储,而VARCHAR(1000)就需要使用两个字节来存储.

CHAR是定长的,MySQL总是根据定义的字符串长度分配足够的空间.

BLOB和TEXT类型

这两个类型都是为存储很大数据而设计的字符串数据类型,分别是采用二进制和字符的方式来进行存储.当TEXT或BLOB过大时, 每个值在行内需要1-4个字节来存储一个指针,然后在外部存储区域存储实际的值.避免使用这两种类型.

4.时间和日期类型

DATETIME

这个类型能保存大范围的值,精度为秒.把日期和时间封装到YYYYMMDDHHMMSS的整数里.

TIMESTAMP

等同于UNIX的时间戳,时间效率高于DATETIME

原创粉丝点击