索引

  1. TextField是不支持建立索引的

  2. MySQL对索引字段长度有限制

    innodb引擎的每个索引列长度限制为767字节(bytes),所有组成索引列的长度和不能大于3072字节

    myisam引擎的每个索引列长度限制为1000字节,所有组成索引列的长度和不能大于1000字节

  3. varchar的最大长度是指字符长度,若数据库字符集为utf-8,则一个字符占3个bytes。因此在utf-8字符集下,innodb引擎创建的单列索引长度不能超过255个字符

mysql版本不同而导致的索引长度限制不同

在MySQL5.5版本,引入了innodb_large_prefix,用来禁用大型前缀索引,以便与不支持大索引键前缀的早期版本的InnoDB兼容

开启innodb_large_prefix可以使单索引的长度限制达到3072字节(但是联合索引总长度限制还是3072字节),禁用时单索引的长度限制为767字节

在MySQL5.5版本与MySQL5.6版本,innodb_large_prefix是默认关闭的,在MySQL5.7及以上版本则默认开启

在MySQL8.0版本中,innodb_large_prefix已被移除

这就是我在自己机器(MySQL8.0)上可以创建1024字符(utf8字符集下表示3072字节)长的索引,而在服务器(MySQL5.5)上不行的原因

现在越来越多的服务器mysql使用utf8mb4格式,如果建立索引,就老版本的mysql就更小了,utf8mb4使用的4个字节长度,767/4=191.75,也就是191了,5.5以下版本不支持索引前缀的情况下,需要建立索引的varchar字段长度最多也就191了

测试索引长度限制的脚本:

use test;
drop table if exists test_index_len;
create table
test_index_len(long_char varchar(1025) primary key) ENGINE=InnoDB charset=utf8;
use test;
drop table if exists test_index_len;
create table
test_index_len(long_char varchar(24),origin_str varchar(1000),key test_index(long_char, origin_str)) ENGINE=InnoDB charset=utf8;

MySQL索引长度限制(转)-时间长就忘记了相关推荐

  1. mysql 索引太长_修改Mysql索引长度限制

    mysql 索引过长1071-max key length is 767 byte 问题 create table: Specified key was too long; max key lengt ...

  2. Mysql 唯一索引长度_关于mysql索引长度的相关内容总结

    MySQL优化之-索引具体代码分析:索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型.根据存储引擎定义每个表的最大索引数和最大索引长度.所有存 ...

  3. mysql索引长度超过767bytes问题解决。Specified key was too long; max key length is 767 bytes

    mysql索引长度超过767bytes问题解决.   错误信息: Specified key was too long; max key length is 767 bytes MySQL的InnoD ...

  4. mysql字段的区分度_详解MySQL索引长度和区分度之间的平衡,值得收藏

    概述 前面我们讲了怎么去计算索引所占用的长度?那么换个方式想?索引又应该设置多少长度比较合理呢? 区分度与索引长度的权衡 首先索引长度和区分度是相互矛盾的, 索引长度太短,那么区分度就很低,吧索引长度 ...

  5. mysql设置索引长度_修改Mysql索引长度限制

    mysql 索引过长1071-max key length is 767 byte 问题 create table: Specified key was too long; max key lengt ...

  6. mysql 索引长度限制_修改Mysql索引长度限制

    mysql 索引过长1071-max key length is 767 byte 问题 create table: Specified key was too long; max key lengt ...

  7. mysql 索引长度tips innodb和myisam引擎

    由于开发人员对索引认识不深或忽略,还有版本不同等问题,在生产环境中创建表失败,引发了一些问题.归纳了一下 测试环境 mysql> select version(); +------------+ ...

  8. Mysql 索引长度限制

    在设置 utf8mb4 字段的字符长度时,可能会抛出一个异常:"Specified key was too long; max key length is 1000 bytes". ...

  9. 技术分享 | MySQL 索引长度限制的案例

    作者:刘晨 网名 bisal ,具有十年以上的应用运维工作经验,目前主要从事数据库应用研发能力提升方面的工作,Oracle ACE ,拥有 Oracle OCM & OCP .EXIN Dev ...

最新文章

  1. 你想要的宏基因组-微生物组知识全在这(180801)
  2. JAVA传递子类参数,在Java中,是否可以通过传递超类方法中使用的参数的子类来覆盖方法?...
  3. java date显示格式_Java如何显示不同格式的日期?
  4. boost::sort模块实现spreadsort 双排序示例
  5. Linux网络编程小知识(字节序、IP格式、函数、子网掩码、DNS域名解析代码实现)
  6. 安全专家教你如何利用Uber系统漏洞无限制的免费乘坐?
  7. linux设备:cdev和kobj_map
  8. hashmap hash冲突怎么解决_HashMap原理及冲突之简谈
  9. 《软件调试》读书笔记:第13章 硬错误和蓝屏
  10. React-组件的生命周期
  11. Linux下更新libnss3的代码,yum安装firefox错误libnssutil3.s
  12. 【STM32】【STM32CubeMX】STM32CubeMX的使用之一:工程建立之点亮你的LED
  13. 6-3 断言与防御式编程
  14. oracle 10G表空间创建的步骤
  15. redis desktop manager 集群_Redis Manager(2.0) —— Redis 运维利器
  16. conda 安装本地包_export包本地安装以及R包被CRAN移除后如何继续安装
  17. python-MongoDB可视化工具Robomongo 和 Mongochef
  18. html实例,实现表单
  19. 在四位共阴极数码上显示“2 3 5 8”四个数字
  20. $splay$学习总结$QwQ$

热门文章

  1. Linux sudo命令配置与使用
  2. 电路设计_单火线技术资料汇总
  3. 2018年15大互联网趋势,你的技术方向走对了吗?
  4. 2021年安全员-C证模拟试题及安全员-C证模拟考试题库
  5. python在同一行输入n个数转义符_Python
  6. HarmonyOS服务卡片——残奥会卡片
  7. 2022-2027年中国资产管理行业市场调研及未来发展趋势预测报告
  8. 2022-2027年中国PKI行业市场调研及未来发展趋势预测报告
  9. makefile中的#.SILENT: 有什么用
  10. 数据库助手连接MySQL设置_数据库简易设置助手下载_数据库简易设置助手官方版下载_3DM单机...