项目里突然varchar字段设置255也不够用了,记得规定不能超过255,今天查了一下,现总结如下:

MySQL要求一个行定义长度不能超过 65535 bytes(所有字符串类型字段包括其字段名称占用空间都计算在内, text、blob等大字段类型除外)。所有如果一个表有很多varchar字段的时候,不应该把varchar设置的特别大,会影响后面的字段

InnoDB存储引擎的表索引的前缀长度最长是767字节(bytes)(前缀长度适用于mysql5.6及以前,后续版本有变化)

你如果需要建索引,就不能超过 767 bytes(mysql5.6及以前,后续版本有变化);utf8编码时 255*3=765bytes ,恰恰是能建索引情况下的最大值。

如果像lavavel5.3往后 使用的是utf8mb4编码,默认字符长度则应该是 767除以4向下取整,也就是191。

当varchar(n)后面的n非常大的时候我们是使用varchar好,还是text好呢?

首先从空间方面:

从官方文档中我们可以得知当varchar大于某些数值的时候,其会自动转换为text,大概规则如下:

  • 大于varchar(255)变为 tinytext
  • 大于varchar(500)变为 text
  • 大于varchar(20000)变为 mediumtext

所以对于过大的内容使用varchar和text没有太多区别。

其次从性能方面:

索引会是影响性能的最关键因素,而对于text来说,只能添加前缀索引,并且前缀索引最大只能达到1000字节。

而貌似varhcar可以添加全部索引,但是经过测试,其实也不是。由于会进行内部的转换,所以long varchar其实也只能添加1000字节的索引,如果超长了会自动截断。

所以我们认为当超过255的长度之后,使用varchar和text没有本质区别,只需要考虑一下两个类型的特性即可。(主要考虑text没有默认值的问题)

创建唯一索引时字段长度限制问题解决

比如,上面的例子就是没办法减少字段的,但是我又一定要建立唯一索引,最终,我选择了调整字段长度,将module_name的长度减少到了255,再次创建表,已成功。

mysql varchar能不能超过255个字节及产生的问题。相关推荐

  1. mysql varchar 与text_mysql的varchar与text对比

    varchar和text是mysql字符存储争议比较多的领域,究竟大字段用那个比较好,我们来对比一下,然后自行选择. 大小对比 VARCHAR:varchar在mysql中必须满足最大行宽度限制,也就 ...

  2. Mysql varchar 字节长度

    1.我们经常 mysql创建 varchar(20)  name这个 20长度 究竟是表示的字符数还是字节数?根编码字符集又有没有关系? 首先 mysql 5.X 以上的版本的 定义中 表示的字符长度 ...

  3. 小白学习MySQL - varchar类型字段为什么经常定义成255?

    很多时候我们看到一些表字符串类型的字段定义为varchar(255),开始以为varchar只能定义为255这个长度值,其实不然. 官方文档所说,varchar有效的最大长度取决于行的容量,以及用的字 ...

  4. MySQL varchar(255) 和 varchar(256) 区别

    引言 欢迎访问我的博客: http://blog.duhbb.com/ 原文地址: MySQL varchar(255) 和 varchar(256) 区别 正文 每次给表创建字段的时候, 遇到 VA ...

  5. mysql varchar 1024_mysql中的数据类型

    一.数据类型的分类 a)数值 类型大小范围(有符号)范围(无符号)用途 TINYINT 1 字节 (-128,127) (0,255) 小整数值 SMALLINT 2 字节 (-32 768,32 7 ...

  6. mysql varchar 长度限制_MySQL数据库varchar的限制规则说明

    MySQL数据库中varchar最大长度是多少?其实这不是一个固定的数字,varchar的长度是有限制规则的.本文我们就来介绍一下MySQL数据库中varchar的限制规则,并以一个实际的例子对限制规 ...

  7. mysql varchar 2000能存_mysql 数据库 varchar 到底可以存多少数据呢,长文慎入

    一.关于UTF-8 UTF-8 Unicode Transformation Format-8bit.是用以解决国际上字符的一种多字节编码. 它对英文使用8位(即一个字节),中文使用24位(三个字节) ...

  8. Mysql varchar类型长度计算(mysql字段长度计算)

    博客上的文章深度参差不齐,本人也是看了好几篇博客才找到另自己满意的博客. 1.限制规则 字段的限制在字段定义的时候有以下规则: a)存储限制 varchar 字段是将实际内容单独存储在聚簇索引之外,内 ...

  9. mysql varchar类型实例_Mysql实例MySQL数据类型varchar详解

    <Mysql实例MySQL数据类型varchar详解>要点: 本文介绍了Mysql实例MySQL数据类型varchar详解,希望对您有用.如果有疑问,可以联系我们.1.varchar(N) ...

最新文章

  1. 局域网中,ip可以访问其他计算机,“网络”中无法发现共享计算机,也无法通过主机名访问。...
  2. python3函数可变输入参量
  3. Android六边形图像
  4. stylus之条件(Conditionals)
  5. 【Redis数据库】命令学习笔记——发布订阅、事务、脚本、连接等命令汇总
  6. linux 移动一行到指定行,linux – 移动行以跟随文件中的另一行
  7. 微信视频不能连接到服务器,微信无法连接到服务器
  8. 国产达梦数据库管理系统-通过Excel文件导入数据
  9. 3月15日 卡尔曼与多元传感器融合
  10. 计算理论笔记 10月10日
  11. HouseMD v0.2.1 发布,比Btrace更实用运行时诊断工具
  12. CentOS6.4 安装MongoDB
  13. “封号斗罗” 程序员修炼之道:通向务实的最高境界
  14. bat转换成exe文件:bat2exe
  15. 新宝资讯3000亿资金候场A股
  16. PowerDesigne 建立概念数据模型
  17. DNS 智能解析功能评测之华为云篇~
  18. [转]基于大规模语料的新词发现算法
  19. mycat连接数据库8.0以上 处理程序连接query_cache_size报错信息 mycat升级数据库踩坑
  20. python的super函数详解

热门文章

  1. rollback mysql_MySQL事务-ROLLBACK,COMMIT用法详解
  2. 中国移动利润大幅上涨后,降低5G套餐,却悄悄提高固网宽带价格
  3. WIN10使用内置Check Point Capsule
  4. 访问 Linux 服务器上的文件(以图片为例)
  5. 心理压力大胃肠容易变弱 注意几点可缓解
  6. 如何解决word文档损坏打不开呢?
  7. Applied Cloud Deep Semantic Recognition: Advanced Anomaly Detection(应用云深层语义识别:高级异态检测)——Chapter 1...
  8. 进入Baxter仿真环境
  9. 一款超高性价比的57步进电机驱动芯片TB6600HG实测稳定4.2A输出42V输入
  10. linux笔记(基础用法一)