MYSQL中char和varchar的区别
mysql> insert into vc (v,c)values('ab ', 'ab ') 说到字节限制这个问题,也想提醒一下。索引长度也是有限制的噢: innodb引擎的每个索引列长度限制为767字节(bytes),所有组成索引列的长度和不能大于3072字节。注意是字节,varchar(256)在不同的编码字节计算不同。例如在utf8mb4中,一个字符占4个字节,256个字符=1024个字节。就达不到索引覆盖的效果噢。相当于只做了一个前缀索引(非常重要,前缀索引是需要回(主键)表的,二次查询) innodb引擎可以通过配置innodb_large_prefix=on(全局参数,动态生效)来让单个索引列长度限制上升到3072字节 在MySQL5.7里默认 innodb_large_prefix=1 解除了767bytes长度限制,但是单列索引长度最大还是不能超过3072bytes 在MySQL5.6里默认 innodb_large_prefix=0 限制单列索引长度不能超过767bytes。需要设置innodb_large_prefix=ON、innodb_file_format=barracuda、innodb_file_per_table=ON ,且Innodb表的存储格式为 DYNAMIC 或 COMPRESSED,则前缀索引最多可包含3072个字节 (编辑:焦作站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |