MYSQL 数据类型

MySQL数据库的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。数据的存储和存储引擎有关,不同的存储引擎存储相同类型的数据时可能方式不一样。

一般把握以下几点:

  1. 更小的通常更好

    1. 一般情况下,应该尽可能使用正确存储数据的最小数据类型。更小的数据类型通常更快。

  2. 简单就好

    1. 简单的数据类型的操作通常需要更少的CPU周期。

  3. 尽量避免使用null,通常情况下最好指定列为NOT NULL。

    1. 可为null的列使得索引、索引统计和值比较都更复杂。

    2. 可为null的列会使用更多的存储空间,在MySQL里面做特殊处理。

数据类型分析

  1. 整数


    • MySQL提供了几种整数类型:TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。分别使用8、16、24、32、64位存储空间。

    • 整数类型有可选的UNSIGNED属性,表示不允许负值(这样可以扩大正数的范围)。

    • 对于存储和计算来说INT(11) 和INT(20)是相同的,只是规定了MySQL的一些交互工具用来显示的字符的个数。

  1. 实数

  • MySQL提供了几种实数类型:FLOAT、DOUBLE、DECIMAL。FLOAT、DOUBLE分别使用32、64位存储空间。DECIMAL在MySQL 5.0和更高版本中允许最多65个数字。

  • DECIMAL可以存放比BIGINT更大的数字,一般尽量在对小鼠进行精确运算时才使用。

字符串类型

  • MySQL提供了几种字符串类型:VARCHAR、CHAR。VARCHAR用来存储可变长度的字符串。

  • VARCHAR比定长字符串更节省空间,因为它仅使用必要的空间,所以对性能也有帮助。但在update时需要比原来更长,这就导致额外的工作。

  • VARCHAR最适合字符串列的最大长度比平均长度大很多,列的更新很少。

  • CHAR类型是定长的。MySQL在哪个是根据定义的字符串长度分配足够的空间。

  • 存储char值是,MySQL会删除所有的末尾空格。

  • char适合存放很短的字符串,所有的长度都接近一个长度的数据,如MD5值。

  • 慷慨是不明智的。VARCHAR(5)和VARCHAR(200)存储‘hello’的空间开销是一样的。但是更长的列会消耗更多的内存

BOLB和TEXT类型

  • BOLB和TEXT都是为存放大数据而设计的字符串数据类型。分别采用二进制和字符方式存储。

  • 字符类型是:TINYTEXT、SMALLTEXT、TEXT、MEDIUMTEXT、LONGTEXT,对应的二进制类型是:TINYBLOB、SMALLBLOB、BLOB、MEDIUMBLOB、LONGBLOB。BLOB是SMALLBLOB的同义词、TEXT是SMALLTEXT的同义词。

使用枚举代替字符串类型

  • 有时候可以用枚举列代替常用的字符串类型。没剧烈可以把一些不重复字符串存储成一个预定义的集合。

日期和时间类型

  • DATETIME存放的时ANSI标准定义的日期和时间表示方法,精确到秒。

  • TIMSTAMP保存了从1970年1月1日午夜以来的秒数,它和UNIX时间戳相同。

  • 除了特殊行为之外,通常也应该尽量使用TIMESTAMP,因为它比DATETIME空间效率更高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章