博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL索引到底支持多少字节?
阅读量:6101 次
发布时间:2019-06-20

本文共 1095 字,大约阅读时间需要 3 分钟。

那么我们来看一下MySQL varchar类型的索引到底能盛多少字节的东西。
MySQL的varchar索引只支持不超过768个字节 
atin1 = 1 byte = 1 character

uft8 = 3 byte = 1 character

gbk = 2 byte = 1 character
如果是GBK,也就是双字节,那么这个索引能盛
768/2=384字节。
如果创建一个大字段的索引的时候就需要注意这些,否则就会报错,如下:
mysql> create index sql_q on slow_log(sql_md5,sql_info);ERROR 1071 (42000): Specified key was too long; max key length is 767 bytesmysql>
这种情况就可以使用前缀索引来解决这个问题:
alter table XXX add index ind_contentl(content(100)) //100 或其它的数
 MySQL 5.5 之前, UTF8 编码只支持1-3个字节 
从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,utf8mb4兼容utf8,所以能支持更多的字符集。 
单列索引限制767,起因是256×3-1。这个3是字符最大占用空间(utf8)。
5.5以后,开始支持4个字节的utf8。255×4>767, 于是增加了一个参数叫做 innodb_large_prefix。
这个参数默认值是OFF。当改为ON时,允许列索引最大达到3072。
但是开启该参数后还需要开启表的动态存储或压缩:
Enable this option to allow index key prefixes longer than 767 bytes (up to 3072 bytes) for InnoDB tables that use DYNAMIC or COMPRESSED row format. (Creating such tables also requires the option values innodb_file_format=barracuda and innodb_file_per_table=true.) See Section 14.8.1.7, “Limits on InnoDB Tables” for maximums associated with index key prefixes under various settings.

转载地址:http://mxsza.baihongyu.com/

你可能感兴趣的文章
程序员,其实你可以做的更好
查看>>
Hadoop Shuffle详解
查看>>
The Viewport and the Window
查看>>
自定义SpringMVC拦截器中HandlerMethod类型转换问题调研
查看>>
PostMessage And SendMessage
查看>>
Redis特性和应用场景
查看>>
SUSE 11 关闭防火墙
查看>>
spring security 3 动态获取权限
查看>>
路由器和交换机的区别
查看>>
我的友情链接
查看>>
×××之GRE隧道协议案例配置
查看>>
Eclipse操作总结
查看>>
Ubuntu 16只能以客人会话身份登录问题的解决
查看>>
Docker创建gogs
查看>>
fw: 数组指针和指针数组的区别
查看>>
无处不抽象,从JVM内存管理想到的
查看>>
Hbase介绍(32)
查看>>
<Java> 为什么接口中没有静态方法
查看>>
Android4: 动态切换界面风格
查看>>
使用AjaxFileUploader上传图片
查看>>