MySQL数据类型优化设计
2017-07-05 16:00
363 查看
我们在优化数据库表的数据类型时,基本遵循以下三个原则:
①更小的通常更好
我们应该使用更合适的最小的数据类型
②简单就好
简单的数据类型通常需要更少的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
①更小的通常更好
我们应该使用更合适的最小的数据类型
②简单就好
简单的数据类型通常需要更少的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
相关文章推荐
- MySQL系列—Scheme设计与数据类型优化
- MySQL查询优化--数据类型与效率
- 理解MySQL数据类型 避免数据库设计出现混乱
- mysql 数据类型优化
- MySQL学习笔记之十八 优化之数据类型问题
- 高性能的MySQL(4)数据类型的优化
- 理解MySQL数据类型 避免数据库设计出现混乱
- MYSQL查询优化:数据类型与效率
- Java,Oracle,MySQL数据设计数据类型参考
- mysql优化之选择数据类型
- MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)
- SQL Server datetime数据类型设计与优化误区
- MySQL查询优化--数据类型与效率
- SQL Server datetime数据类型设计与优化误区
- MySQL的分层数据管理 无限级分类 设计与优化
- 理解MySQL数据类型 避免数据库设计出现混乱
- 理解MySQL数据类型 避免数据库设计出现混乱
- mysql性能优化之数据类型的选择
- mysql数据类型优化
- 高性能的MySQL(4)数据类型的优化