好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MySQL varchar计算:求列的数目和计算N的最大值 -

MySQL varchar计算:求列的数目和计算N的最大值

 

有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少?

先明白计算的一些规则限制

 

① 存储限制

    需要额外地在长度列表上存放实际的字符长度:小于255为1个字节,大于255则要2个字节

② 编码限制

    gbk:每个字符最多占用2个字节

    utf8:每个字符最多占用3个字节

③ 长度限制

    那么列的数目最多有65535/(255*3)=85,列的数目可以从这里得到依据

   

行长度计算公式如下:

row length = 1 + (sum of column lengths) + (number of NULL columns + delete_flag + 7)/8 + (number of variable-length columns)

 

① 对于MyISAM,需要额外1个位来记录值是否为NULL;对于InnoDB,没有区别

 

减1是因为实际存储从第2个字节开始

减2则因为要在列表长度存储实际字符长度

除3是因为utf8编码限制

查看更多关于MySQL varchar计算:求列的数目和计算N的最大值 -的详细内容...

  阅读:38次