zoukankan      html  css  js  c++  java
  • MySQL 字段类型占用空间

    MySQL支持多种列类型:数值类型、日期/时间类型和字符串(字符)类型。 
    首先来看下各类型的存储需求(即占用空间大小):

    数值类型存储需求

    列类型存储需求
    TINYINT 1个字节
    SMALLINT 2个字节
    MEDIUMINT 3个字节
    INT, INTEGER 4个字节
    BIGINT 8个字节
    FLOAT(p) 如果0 <= p <= 24为4个字节, 如果25 <= p <= 53为8个字节
    FLOAT 4个字节
    DOUBLE [PRECISION], item REAL 4个字节
    DECIMAL(M,D), NUMERIC(M,D) 变长(0-4个字节)
    BIT(M) 大约(M+7)/8个字节

     

    int(10)这里的10指的是数值的宽度,并不是字节

    日期和时间类型的存储需求

    列类型存储需求
    DATE 3个字节
    DATETIME 8个字节
    TIMESTAMP 4个字节
    TIME 3个字节
    YEAR 1个字节



    字符串类型的存储需求

    列类型存储需求
    CHAR(M) M个字节,0 <= M <= 255
    VARCHAR(M) L+1个字节,其中L <= M 且0 <= M <= 65535
    BINARY(M) M个字节,0 <= M <= 255
    VARBINARY(M) L+1个字节,其中L <= M 且0 <= M <= 255
    TINYBLOB, TINYTEXT L+1个字节,其中L < 28
    BLOB, TEXT L+2个字节,其中L < 216
    MEDIUMBLOB, MEDIUMTEXT L+3个字节,其中L < 224
    LONGBLOB, LONGTEXT L+4个字节,其中L < 232
    ENUM(‘value1’,’value2’,…) 1或2个字节,取决于枚举值的个数(最多65,535个值)
    SET(‘value1’,’value2’,…) 1、2、3、4或者8个字节,取决于set成员的数目(最多64个成员)

     

    上表的M只是为了说明占用空间大小,在实际创建表中char(20)、varchar(20),20指的是字符而不是字节(4.0版本以上,以下指的是字节);那么字符和字节的转换要看字符集,utf-8下,1字符=3字节;gbk下,1字符=2字节。

    接下来会剖析varchar最大长度和text占用空间问题。

    参考来源:https://blog.csdn.net/free_ant/article/details/52936722

  • 相关阅读:
    Cocos Creator代码编辑环境配置
    CocosCreator编辑器界面
    Colored Sticks (并查集+Trie + 欧拉路)
    子序列 NYOJ (尺取法+队列+hash) (尺取法+离散化)
    相同的雪花 Hash
    F
    逆序数
    士兵杀敌5 前缀数组
    Color the ball 线段树 区间更新但点查询
    士兵杀敌(二) 线段树
  • 原文地址:https://www.cnblogs.com/jingmin/p/9101332.html
Copyright © 2011-2022 走看看