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

  • 相关阅读:
    天梯赛5-12 愿天下有情人都是失散多年的兄妹 【dfs】
    poj2718 Smallest Difference【贪心】
    HDU problem 5635 LCP Array【思维】
    codeforces 782C Andryusha and Colored Balloons【构造】
    HDU 4278 Faulty Odometer【进制转换】
    codeforces B. The Meeting Place Cannot Be Changed【二分】
    POJ 3264 Balanced Lineup 【线段树】
    HDU 1850
    CodeForces-714C
    HDU Problem 1247 Hat's Words 【字典树】
  • 原文地址:https://www.cnblogs.com/jingmin/p/9101332.html
Copyright © 2011-2022 走看看