六、数据类型选择(MySQL读书笔记)

1、CHAR & VARCHAR

                       CHAR                      VARCHAR
     固定长度字符串(不足空格补位)                 可变长度字符串
      处理速度比 VARCHAR 快得多
                     浪费空间

1.1、不同存储引擎对两者使用原则有所不同

  MyISAM 建议使用固定长度的数据列
MEMORY 都可以;均作为 CHAR 处理
  InnoDB 建议使用 VARCHAR;内部的行存储格式不区分是否固定长度(本质上,固定长度的 CHAR 不一定比 VARCHAR 性能好;使用 VARCHAR 来最小化需要处理的数据行的存储总量和磁盘 IO更 好)

2、TEXT & BLOB

2.1、TEXT:只能保存字符数据

2.2、BLOB:能用来保存二进制数据

2.3、特别是在执行大量的删除操作时,两者都会有性能问题删除会导致数据表留下‘空洞’,对插入性能有影响。需要定期使用 OPTIMIZE TABLE 功能定期进行碎片整理)【OPTIMIZE TABLE tableName

2.4、可以使用合成的(Synthetic)索引提高大文本字段的查询性能

合成索引就是根据大文本字段的内容建立一个散列值,并把这个散列值存储在单独的数据列中,然后通过检索散列值即可找到对应的文本;只能用于精确匹配的查询

3、浮点数(float double) & 定点数(decimal numberic)

3.1、浮点数一般用于表示含有小数部分的数值。如果插入的精度超过实际精度,插入值会被四舍五入然后插入,过程不报错

3.2、定点数实际以字符串形式存储。默认的 SQLMode 下,插入超出精度的数值 MySQL 会进行警告,但实际仍按照四舍五入进行插入;如果 SQLMode 是在 TRADITIONAL(传统模式)下,系统直接报错导致无法插入

3.3、浮点数存在精度不准问题(插入值不等于实际存储的记录值);浮点数的比较也是一个普遍的问题 - 尽量避免使用浮点数进行比较;特殊值处理

4、日期类型

4.1、TIMESTAMP 表示的日期范围比 DATETIME 短得多

4.2、TIMESTAMP 与时区对应

你可能感兴趣的:(MySQL,MySQL)