zoukankan      html  css  js  c++  java
  • MySQL调优之数据类型

    1.选择优化的数据类型

    几个原则:更小的通常更好  简单就好  尽量避免NULL

    选择数据类型时,先选合适的大类型:数字,字符串,时间等。下一步选择具体类型。

    具体类型包括:

    1.1 整数类型

    如果存储整数,可以使用以下几种数据类型:

    TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT。分别使用8,16,24,32,64位存储空间。可选UNSIGNED属性。

    1.2 实数类型

    如果存储实数类型:FLOAT和DOUBLE支持使用标准浮点运算进行近似计算,而DECIMAL类型用于存储精确的小数。

    浮点类型在存储同样范围的值时,通常比DECIMAL使用更少的空间。FLOAT使用4个字节存储,而DOUBLE占用8个字节。由于开销,除非要对小数进行精确计算,否则不要用DECIMAL。

    1.3 字符串类型

    VARCHAR

    VARCHAR用于存储可变长字符串,比CHAR更节省空间。VARCHAR使用1或2个额外字节记录字符串的长度。VARCHAR节省了存储空间,所以对性能也有帮助。

    以下情况适合用VARCHAR:

    1.字符串列的最大长度比平均长度大很多;

    2.列的更新很少;

    3.UTF-8字符集,每个字符用不同的字节数进行存储

    CHAR

    CHAR类型是定长的:MySQL总是根据定义的字符串长度分配足够的空间。

    存CHAR值时,MySQL会删除所有的末尾空格。  CHAR适合存储很短的字符串,或者所有值都接近同一个长度。

    BINARY和VARBINARY存储的是二进制字符串。

    BLOB和TEXT类型

    为存储很大的数据而设计的字符串数据类型,分别采用二进制和字符方式存储。

    使用枚举(ENUM)代替字符串类型

    可以让表的大小缩小,而且当把列都转换成ENUM以后,关联变得很快。

    1.4 日期和时间类型

    DATETIME

    TIMESTAMP

    通常尽量使用TIMESTAMP,因为它比DATETIME空间效率更高。

    1.5 位数据类型

    BIT

    SET

    在整数列上按位操作

    1.6 选择标识符

     整数类型

    整数通常是标识列最好的选择,因为它们很快并且可以使用AUTO_INCREMENT。

    ENUM和SET类型

    避免

    字符串类型

    避免

    2.MySQL schema 设计中的陷阱

    太好的列

    全能的枚举

    3.范式和反范式

  • 相关阅读:
    UPC2018组队训练赛第十二场
    ACM-ICPC 2018南京赛区网络预选赛
    UPC2018组队训练赛第十一场
    UPC2018组队训练赛第十场
    UPC2018组队训练赛第九场
    linux 用简单密码
    设置分辨率
    packstack
    rbenv
    elasticsearch
  • 原文地址:https://www.cnblogs.com/earsonlau/p/11443051.html
Copyright © 2011-2022 走看看