> 데이터 베이스 > MySQL 튜토리얼 > MySQL varchar计算:求列的数目和计算N的最大值_MySQL

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
풀어 주다: 2016-06-01 13:28:48
원래의
1303명이 탐색했습니다.

bitsCN.com

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

 

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

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

 

① 存储限制

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

② 编码限制

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

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

③ 长度限制

    MySQL定义行的长度不能超过65535,这个限制了列的数目,比如char(255) utf8

    那么列的数目最多有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,没有区别

② 对于row_format为fixed,delete_flag为1;对于row_format=dynamic,delete_flag为0

 

根据这个公式,我们便能够解答开头N的最大值:(65535-1-2)/3

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

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

除3是因为utf8编码限制

bitsCN.com
관련 라벨:
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿