美文网首页
Mysql索引过长问题解析

Mysql索引过长问题解析

作者: As_breath | 来源:发表于2020-05-15 22:34 被阅读0次

近期遇到两次mysql建表时,提示索引过长错误信息的问题。

根据错误信息提示,检查建表语句,发现对应的索引字段为VARCHAR(256).与提示的767bytes长度相差较大。由此引出Mysql(大多数数据库对varchar类型处理都基本相似)对VARCHAR类型的处理机制的探讨。

在Mysql中,varchar类型的单位其实是 “字符” ,而非我们字节。是一种自适应的存储方式。

例如:VARCHAR(3)  既可以存储 "abc"三个英文字符 ,此时存储长度为3个字节,也可以存储 "数据库" 三个中文字符,此时存储长度不少于9个字节,但无法存下 "abcd"四个英文字符。

因此我们在设计数据库字段,遇到可变长varchar类型时,应当考虑其实际空间占用上限。

值得注意的是,可变长字段的占用上限与数据库采用的编码相关,我们的数据库采用的UTF-8,最宽字符长度为 3字节中文字符。因此可计算出索引字段的最大设计长度为

767/3=255,即 当数据库编码为UTF-8时,索引字段能支持的最大VARCHAR字段长度定义为VARCHAR(255)

以此扩展,如果为UTF8-BM4编码,此时该编码支持4字节的宽字符,长度设计上限则应为 767/4 = 191,即 VARCHAR(191)

外链参考:https://www.jianshu.com/p/83bdcf9bd5a8

注:对定长类型按类型指定长度或者类型默认字节数计算即可。

相关文章

  • Mysql索引过长问题解析

    近期遇到两次mysql建表时,提示索引过长错误信息的问题。 根据错误信息提示,检查建表语句,发现对应的索引字段为V...

  • mysql 技术点汇总

    MYSQL存储引擎介绍 索引 mysql 执行过程 mysql 语句解析过程 https://www.cnblog...

  • MySQL索引及查询优化书目录

    MySQL索引的原理之索引目的 MySQL索引的原理之索引原理 MySQL索引的原理之索引的类型 MySQL索引的...

  • mysql索引问题

    情景:当表中有两条一模一样的数据,我们第一次插入时就保证了数据正确,但是N次插入呢?就2N条了,所有我们要建索引,...

  • 从磁盘I/O角度聊聊Mysql索引

    从磁盘I/O角度聊聊Mysql索引 首先思考下这个问题,为什么添加了索引就能提高mysql的查询效率呢?MySQL...

  • MySQL索引全解析

    索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。 索引最形象的比喻就是图书的目录了。注意...

  • Mysql索引相关

    此文章主要回答以下问题:1 、索引数据结构演变2 、mysql索引数据结构 mysql索引的演变 线性结构:首先不...

  • MySQL面试指南

    MySQL面试指南 版本类常见问题: 索引

  • 高性能的索引策略

    MySQL查询基础-查询执行过程 MySQL聚簇索引 MySQL覆盖索引 MySQL索引扫描排序 MySQL冗余和...

  • MySQL索引的使用

    MySQL索引 MySQL索引可以快速提高MySQL的检索速度。索引分单列索引和组合索引单列索引:即一个索引只包含...

网友评论

      本文标题:Mysql索引过长问题解析

      本文链接:https://www.haomeiwen.com/subject/ljldwhtx.html