• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL索引的索引长度问题具体介绍

MySQL索引的索引长度问题具体介绍

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了MySQL,索引,索引长度等相关知识,希望本文的分享对您有所帮助
  MySQL的每个单表中所创建的索引长度是有限制的,且对不同存储引擎下的表有不同的限制。

  在MyISAM表中,创建组合索引时,创建的索引长度不能超过1000,注意这里索引的长度的计算是根据表字段设定的长度来标量的,例如:

create table test(id int,name1 varchar(300),name2 varchar(300),name3 varchar(500))charset=latin1 engine=myisam;
create index test_name on test(name1,name2,name3);

  此时报错:

Specified key was too long;max key length is 1000 bytes.

  修改表结构:

alter table test convert to charset utf8;
  create index test_name3 on test(name3).

  此时warning:

Specified key was too long;max key length is 1000 bytes.

但是索引创建成功,查看表结构可以看到创建的索引是一个前缀索引:

‘key test_name3(name3(333))’


  得出的结论是:对于myisam表,如果创建组合索引,所创建的索引长度和不能超过1000 bytes,否则会报错,创建失败;对于myisam的单列索引,最大长度也不能超过1000,否则会报警,但是创建成功,最终创建的是前缀索引(取前333个字节)。

  在Innodb表中,创建组合索引:
 

create table test1(id int,name1 varchar(300),name2 varchar(300),name3 varchar(500))charset=latin1 engine=innodb;
  create index test1_name on test(name1,name2,name3);

  此时给出

warning:Specified key was too long;max key length is 767 bytes.

  修改表结构:

alter table test1 convert to charset utf8;
  create index test1_name3 on test(name3).

  此时给出

warning:Specified key was too long;max key length is 767 bytes.


  得出的结论是:对于创建innodb的组合索引,如果各个列中的长度不超过767,则不再计算所有列的总长度,如果有超过767的,则给出报警,索引最后创建成功,但是对于超过767字节的列取前缀索引;对于innodb的单列索引,超过767的,给出warning,最终索引创建成功,取前缀索引(取前255字节)。

以上就是MySQL索引的索引长度问题具体介绍的内容,更多相关内容请关注微课江湖()!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2018-12-05ORACLE 回收站当前状态查询整理
  • 2018-12-05SQLserver 实现分组统计查询(按月、小时分组)
  • 2018-12-05 Mysql-索引数据结构
  • 2018-12-05SQL语句(T-SQL汇总) 用T-SQL画出这些图形
  • 2017-05-11MySQL双Master配置的方法详解
  • 2018-12-05mysql 动态生成测试数据
  • 2018-12-05mysql中关于排名函数的具体介绍
  • 2018-12-05总结MySQL计算年龄的五种方法及各自的优缺点
  • 2018-12-05MySQL 客户端不输入用户名和密码直接连接数据库的2个方法
  • 2018-12-05运用BSon将数据记录转换成二进制

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 利用mysql的inet_aton()和inet_ntoa()函数存储IP地址的方法分享
    • 详细介绍MongoDB常用的操作
    • MySQL 相关的环境变量
    • Mysql之EXPLAIN显示using filesort介绍
    • 如何在一台windows主机上实现MySQL的主从复制?
    • mysql备份的三种方式详解
    • 在CentOS上MySQL数据库服务器配置方法
    • MySQL-Python安装问题小记
    • MariaDB(Mysql分支)my.cnf配置文件中文注释版
    • Sql Server 2012 分页方法分析(offset and fetch)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有