zoukankan      html  css  js  c++  java
  • mysql varchar 最大存多少

    mysql varchar 最大存多少

    存储限制

    varchar 字段是将实际内容单独存储在聚簇索引之外,内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535。

    编码长度限制

    字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766;

    字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845。

    若定义的时候超过上述限制,则varchar字段会被强行转为text类型,并产生warning。

    2、计算例子
    
    举两个例说明一下实际长度的计算。
    
     
    
    a) 若一个表只有一个varchar类型,如定义为
    
    create table t4(c varchar(N)) charset=gbk;
    
    则此处N的最大值为(65535-1-2)/2= 32766。
    
    减1的原因是实际行存储从第二个字节开始’;
    
    减2的原因是varchar头部的2个字节表示长度;
    
    除2的原因是字符编码是gbk。
    
     
    
    b) 若一个表定义为
    
    create table t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;
    
    则此处N的最大值为 (65535-1-2-4-30*3)/3=21812
    
    减1和减2与上例相同;
    
    减4的原因是int类型的c占4个字节;
    
    减30*3的原因是char(30)占用90个字节,编码是utf8。
    
     
           如果被varchar超过上述的b规则,被强转成text类型,则每个字段占用定义长度为11字节,当然这已经不是“varchar”了。
    
  • 相关阅读:
    UVa 482
    UVa 10360
    UVa 10812
    UVa 10420
    UVa 573
    UVa 357
    UVa 147
    UVa 674
    郑厂长系列故事——逃离迷宫 HDU4524
    威威猫系列故事——过生日 HDU 4523
  • 原文地址:https://www.cnblogs.com/brady-wang/p/15116255.html
Copyright © 2011-2022 走看看