很多时候我们看到一些表字符串类型的字段定义为varchar(255),开始以为varchar只能定义为255这个长度值,其实不然。

官方文档所说,varchar有效的最大长度取决于行的容量,以及用的字符集,整行的所有列的定义长度不能超过65535字节(bytes),text、blob等大字段类型除外,

P.S. https://dev.mysql.com/doc/refman/5.7/en/char.html

《小白学习MySQL - 变通创建索引的案例一则》提到了,

InnoDB,如果需要建索引,就不能超过767bytes,utf8编码,255*3=765 bytes,是能建索引情况下的最大值,utf8mb4编码,默认字符长度则应该是767除以4向下取整,就是191。如果设置了innodb_large_prefix,最大长度是3072字节,utf8编码,1024*3=3072 bytes,utf8mb4编码,768*4=3072。

MyISAM,如果需要建索引,就不能超过1000bytes,utf8编码,333*3=999 bytes,是能建索引情况下的最大值,utf8mb4编码,默认字符长度则应该是1000除以4,就是250。

一般情况下,我们用的是InnoDB引擎,utf8则是常用字符集,因此varchar类型字段定义为255比较合适。

但实际上,varchar(255)并不是最优的字符定义长度,究竟定成多少,还是要根据实际需求来决定,例如这个字段我就不需要创建索引,定义超过255,是可以的,只能说255是常规情况下较少出错的一个值。

小白学习MySQL,

《小白学习MySQL - 变通创建索引的案例一则》

《小白学习MySQL - “投机取巧”统计表的记录数》

《小白学习MySQL - 一次慢SQL的定位》

《小白学习MySQL - TIMESTAMP类型字段非空和默认值属性的影响》

《小白学习MySQL - 聊聊数据备份的重要性》

《小白学习MySQL - InnoDB支持optimize table?》

《小白学习MySQL - table_open_cache的作用》

《小白学习MySQL - 表空间碎片整理方法》

《小白学习MySQL - 大小写敏感问题解惑》

《小白学习MySQL - only_full_group_by的校验规则》

《小白学习MySQL - max_allowed_packet》

《小白学习MySQL - mysqldump保证数据一致性的参数差异》

《小白学习MySQL - 查询会锁表?》

《小白学习MySQL - 索引键长度限制的问题》

《小白学习MySQL - MySQL会不会受到“高水位”的影响?》

《小白学习MySQL - 数据库软件和初始化安装》

《小白学习MySQL - 闲聊聊》

近期更新的文章:

《介绍一款Oracle的利器小工具-SQLcl》

《ClickHouse的ontime测试数据集》

《表和索引统计信息自动采集的问题》

《小白学习MySQL - 变通创建索引的案例一则》

《ClickHouse安装和使用》

文章分类和索引:

《公众号800篇文章分类和索引》

小白学习MySQL - varchar类型字段为什么经常定义成255?相关推荐

  1. mysql varchar 默认长度_MySQL VARCHAR类型字段到底可以定义多长

    MySQL 单行行长最大是65535,不包含TEXT,BLOB类型. varchar 长度小于255时,需要额外使用1字节存储长度,大于255时,需要 额外使用2字节存储长度. varchar 栏位如 ...

  2. 小白学习MySQL - 不同版本创建用户的些许区别

    MySQL创建用户有很多种方法,例如常规create user,再通过grant,授予权限,还可直接grant连带创建用户和授权一起做了.最近创建过程中,发现不同版本操作有些区别. MySQL 5.7 ...

  3. 小白学习MySQL - 增量统计SQL的需求

    这篇文章在爱可生开源社区首发<技术分享 | MySQL中一个聚类增量统计 SQL 的需求>. 同事提了一个MySQL数据库中SQL增量统计的问题,我用测试数据模拟一下,测试表tt有三个字段 ...

  4. 小白学习MySQL - Generated Columns功能

    碰巧看到MySQL有这种的语法"INTEGER GENERATED ALWAYS AS IDENTITY",一知半解,了解一下. 官方文档介绍了这种Generated Column ...

  5. 小白学习MySQL - 一次慢SQL的定位

    同事提了个问题,某套测试环境MySQL执行语句出现hang. 作为小白,每次碰到问题,都是在积累经验.执行SQL出现hang,说明应该有会话处于等待状态,可以通过show processlist看下当 ...

  6. MySQL varchar类型可以存储多少个汉字

    MySQL varchar类型可以存储多少个汉字,多少个数字 具体要看的mysql版本 4.0版本以下,比如 varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字 ...

  7. 小白学习MySQL - InnoDB支持optimize table?

    MySQL数据库中进行表空间整理,可以用的一种操作就是optimize table, OPTIMIZE [NO_WRITE_TO_BINLOG | LOCAL]TABLE tbl_name [, tb ...

  8. 小白学习MySQL - 聊聊数据备份的重要性

    最近某套MySQL数据库服务器异常关机,导致MySQL不能正常拉起来,启动过程中,error日志中记录了如下的信息,可以看到,数据库因为异常关闭,此时会进行实例恢复的操作, [Note] InnoDB ...

  9. 小白学习MySQL - 数据库软件和初始化安装

    作为个人学习环境来说,搭建一套VMWare的环境,算是性价比最高的一种选择,当然你可以购买一些公有云服务器(有些则是免费的,例如Oracle Cloud,可参考<Oracle Cloud云端账号 ...

最新文章

  1. 23,148,855,308,184,500是一个神奇的数字,还是纯粹的机会?
  2. Linux下快捷键使用
  3. 把类成员改成指针_C++之this指针
  4. 熊猫烧香病毒企业局域网网完整解决方案
  5. PaperNotes(6)-GAN/DCGAN/WGAN/WGAN-GP/WGAN-SN-网络结构/实验效果
  6. Win7系统win键没有反应的应对措施
  7. 【线性代数本质】4:矩阵乘法本质
  8. linux centos7 配置ftp,Linux Centos7配置ftp服务器
  9. 智慧城市发展路径应分级分类
  10. CNI插件之bridge plugin
  11. 弦截法 解高次方程 C语言/C++
  12. A001-186-2629-赖海洲
  13. 我的读书清单(持续更新)
  14. 牵手华为冲刺L2++市场,这家国产厂商的自动驾驶版图再扩张
  15. Wordpress响应式Git主题/响应式CMS主题模板
  16. Linux 安装仿宋字体
  17. 判别两棵树是否相等 设计算法_BAIR最新RL算法超越谷歌Dreamer,性能提升2.8倍
  18. ET框架5.0 自学笔记(1) - ET框架介绍
  19. myeclipse 8.0破解版下载与安装
  20. Codevs 抄书问题123

热门文章

  1. 除夕有6.88亿人使用微信红包;超2.5亿人集齐五福过福年;巴菲特成苹果第四大股东丨价值早报
  2. 大数据在物流领域有哪些应用呢?
  3. java rowmapper 通用实现_java-在RowMapper中使用查询
  4. 引用的“0x00000000”内存,该内存不能为“read”或“written
  5. springboot校园新闻网站的设计与实现 毕业设计-附源码142357
  6. wifi有没有漫游成功判断方法c
  7. 项目linux基本命令1答案,10. 项目Linux基本命令1
  8. 长连接和短连接区别及应用场景
  9. 运动型蓝牙耳机推荐,运动小白运动型蓝牙耳机入门指南
  10. UG NX 12 基准平面