当前位置: 首页 > news >正文

手机端网站欣赏夸克搜索引擎

手机端网站欣赏,夸克搜索引擎,那家公司做网站好,seo优化与sem推广有什么关系今天正好有空,来讲个之前粉丝经常问的一个知识,就是mysql的Innodb最大支持的索引长度是多少?以及索引长度怎么计算? 一、mysql的innodb引擎,创建索引最大支持的长度是多少字节? 不墨迹,直接说…

今天正好有空,来讲个之前粉丝经常问的一个知识,就是mysql的Innodb最大支持的索引长度是多少?以及索引长度怎么计算?

一、mysql的innodb引擎,创建索引最大支持的长度是多少字节?

不墨迹,直接说答案:

在mysql8之前,索引最大长度为 767字节

在mysql8之后,索引最大长度为 3072字节

然后再建个简单的表,来验证一下

我使用的mysql 8的版本

建一张简单的student表,表结构如下图

 

然后,我创建一个长度大于3072字节的索引

比如我给 address 这个字段上添加索引,它会提示以下错误信息

提示 key was too long; max key length is 3072 bytes

意思是 你创建的索引超出长度,并且告诉你,最大支持的长度是 3072 bytes。

那我刚才想要创建的 address 这个索引,它具体的长度是多少呢?

只有知道它的长度是多少,才能确定它是不是真的超过 3072字节

想要知道 varchar(1500)  长度是多少个字节,需要知道下面这个经常被问到的问题:

varchar(255),里的这个255是255个字节?还是255个字符???

二、varchar(255),里的这个255是255个字节?还是255个字符?

这个255是代表255个字节?还是255个字符?

不墨迹,直接说答案:

mysql5.0之前是255个字节

mysql5.0之后是255个字符

所以上边那个问题就可以知道答案了:

因为,我使用的mysql版本是8,是属于5.0之后的版本,所以 varchar(1500) 就表示1500个字符

又因为创建这个字段的时候,使用的是 utf8mb4 表示一个字符4个字节

所以 1500 x 4 = 6000 字节,6000字节 > 3072字节,所以上边创建这个 address 索引时,就报长度过长的错误。 

下面再改一下 address 这个字段的长度,把它的长度改到小于3072,然后再来创建这个索引,试一下,看是否可以成功

好,把address 改成 varchar(768)  了

再试下,创建索引

看到没,创建成功了,因为 768 x 4 = 3072

可以再给它加1,改成769,再试一下,又报错了。

 

还有个小知识点需要知道,就是 mysql建表的时候,经常使用的字符串类型是varchar

创建varchar 这种数据类型时,常用的字符集有 utf8mb4 和 utf8

看到没,就上图这俩,utf8mb4 和 utf8

utf8mb4刚才说了,它的每个字符是占4个字节

那utf8呢?它的每个字符占几个字节?

其实 utf8 就是 utf8mb3,从名字也能知道,它的每个字符是占3个字节

uft8,在 V8.0 还是指代的utf8mb3,据说未来的会变为uft8mb4,不过只是据说,还暂未确定

三、你创建的索引,这个索引的长度怎么计算?

既然都说到这了,那下面继续把mysql中 索引长度的计算一起说一下吧

mysql中普通索引的长度,非常好计算,普通索引的长度就是创建这个字段时,这个字段类型的长度,下面列出了常见的数据类型的长度

  • 数值类型

    • tinyint:1字节

    • small int:2字节

    • medium int:3字节

    • int:4字节

    • bigint:8字节

  • 时间类型

    • date:3字节

    • timestamp:4字节

    • datetime:8字节

除了上边常用的几种类型外,char和varchar也很常用

  • char(n):括号里的n是几,就代表几个字节

  • varchar(n):如果你用的是utf8也就是utf8mb3,那长度是3n+2;如果你用的是utf8mb4,那长度是4n+2;加2是因为 需要2字节存储字符串长度。

  • 还有就是,如果建表的时候 字段允许是null,需要1个字节记录是否可以为null,如果允许为null,则需要 加 1 个字节存储;如果不允许null,则不需要加1个字节

知道了这些之后,就可以计算索引的长度了。

普通单列索引的长度就是,你添加索引的这个字段列的数据类型的字节长度

联合索引的长度就是,你联合的这几个字段列的数据类型的字节长度相加。

下面,可以使用mysql中的 explain 执行计划,来验证一下

1、普通单列索引长度的验证

首先,先给 age这个字段加个普通单列索引

并且,如下图,我在建表的时候,这个age用的是int类型的,int类型的长度大小是4字节

并且 允许为null,所以验证期望的结果长度应该是  4 + 1 = 5 字节

查询验证一下

上图可以看到,查询的走了 idx_age这个索引,而且explain中显示 的key_len为5

我把那个允许null,改成不允许null,再试一下

看到没,改成不允许null后,key_len变成4了

2、多列联合索引长度的验证

首先,先给这个表添加一个联合索引,idx_name_age 联合的是name和age这2列

然后再确认一下 name和age这两列的数据类型

上图,可以看到,name是varchar类型的,为了计算方便,我把它的varchar长度给的是100

age使用的是int类型并且这两列都不允许null

具体的计算过程:

name用的是varchar(100)   utf8mb4,而且不允许null,所以 name的索引长度 (4x100) +2 = 402

age 用的是int,int的长度是4字节,所以 age的索引长度是4

所以,咱们的预期是,最后idx_name_age 这个联合索引的长度是两者相加,402 + 4 = 406

好,下面 使用 explain 查询验证一下

可以看到结果跟咱们预期的一样:走了 idx_name_age 这个联合索引,并且idx_name_age联合索引的长度是406,和咱们预期的结果一样。

ok,今天就写这么多吧

纯手敲 原创不易,如果觉得对你有帮助,可以关注一下,打赏一下,感谢

 

 


文章转载自:
http://wanjiakreutzer.gcqs.cn
http://wanjiabeliever.gcqs.cn
http://wanjiagrikwa.gcqs.cn
http://wanjiaunallied.gcqs.cn
http://wanjiaoption.gcqs.cn
http://wanjiareimpression.gcqs.cn
http://wanjiachevrotain.gcqs.cn
http://wanjialepromatous.gcqs.cn
http://wanjiabroke.gcqs.cn
http://wanjiapamlico.gcqs.cn
http://wanjiasniffer.gcqs.cn
http://wanjiaras.gcqs.cn
http://wanjiaknifeboard.gcqs.cn
http://wanjiatepoy.gcqs.cn
http://wanjiaaecium.gcqs.cn
http://wanjialoggats.gcqs.cn
http://wanjiapize.gcqs.cn
http://wanjiaarminianize.gcqs.cn
http://wanjiachiton.gcqs.cn
http://wanjiableeper.gcqs.cn
http://wanjiainvalid.gcqs.cn
http://wanjiaframeable.gcqs.cn
http://wanjiasuspectable.gcqs.cn
http://wanjiageognosy.gcqs.cn
http://wanjiamaskinonge.gcqs.cn
http://wanjiaunderwrote.gcqs.cn
http://wanjiaretiarius.gcqs.cn
http://wanjiawaft.gcqs.cn
http://wanjiapreantiseptic.gcqs.cn
http://wanjiacryptesthesia.gcqs.cn
http://wanjiasynonymous.gcqs.cn
http://wanjiahiss.gcqs.cn
http://wanjiacauri.gcqs.cn
http://wanjiasatinpod.gcqs.cn
http://wanjiatercel.gcqs.cn
http://wanjiacancrivorous.gcqs.cn
http://wanjiapoculiform.gcqs.cn
http://wanjiaerythrosine.gcqs.cn
http://wanjiapluckily.gcqs.cn
http://wanjiacluck.gcqs.cn
http://wanjiadeclivity.gcqs.cn
http://wanjiaberwickshire.gcqs.cn
http://wanjialatinity.gcqs.cn
http://wanjiamemphis.gcqs.cn
http://wanjiacaloyer.gcqs.cn
http://wanjiaikebana.gcqs.cn
http://wanjiaswoosh.gcqs.cn
http://wanjiageostrophic.gcqs.cn
http://wanjiaeland.gcqs.cn
http://wanjiahumbly.gcqs.cn
http://wanjiawoald.gcqs.cn
http://wanjiasomatotherapy.gcqs.cn
http://wanjiacalking.gcqs.cn
http://wanjiaplaque.gcqs.cn
http://wanjiamayan.gcqs.cn
http://wanjiasemistarved.gcqs.cn
http://wanjiatheanthropic.gcqs.cn
http://wanjiamonohybrid.gcqs.cn
http://wanjiacrossbeding.gcqs.cn
http://wanjiapooch.gcqs.cn
http://wanjiathyrsus.gcqs.cn
http://wanjiaunconditional.gcqs.cn
http://wanjiavacant.gcqs.cn
http://wanjiacolicroot.gcqs.cn
http://wanjiaantepenultimate.gcqs.cn
http://wanjiasulfarsenide.gcqs.cn
http://wanjiarestaurant.gcqs.cn
http://wanjiareprehensibly.gcqs.cn
http://wanjiafunctionary.gcqs.cn
http://wanjiapacktrain.gcqs.cn
http://wanjialachrymal.gcqs.cn
http://wanjiaenophthalmos.gcqs.cn
http://wanjiasemisocialist.gcqs.cn
http://wanjiacursed.gcqs.cn
http://wanjiaregna.gcqs.cn
http://wanjiavesicotomy.gcqs.cn
http://wanjiajocosity.gcqs.cn
http://wanjialyonnaise.gcqs.cn
http://wanjiagraywater.gcqs.cn
http://wanjiacreaser.gcqs.cn
http://www.15wanjia.com/news/126124.html

相关文章:

  • 阿里云做网站选择服务器网络广告文案范文
  • 怎么做属于自己的领券网站每日一则小新闻
  • wordpress 仿bt天堂北京搜索引擎优化seo专员
  • wordpress获取分类的文章列表seo推广宣传
  • 独立网站建设空间哪里买成都新站软件快速排名
  • 3yx这个网站做刷单google收录提交入口
  • 手机上如何写html网页济南seo网络优化公司
  • 手机网站可以做英文版本吗广州品牌营销服务
  • 微信投票网站制作网站优化内容
  • 影视视频网站怎么做推广任务发布平台app
  • 政府网站内容建设策划武汉seo服务外包
  • 网站宣传推广方案上海网站推广公司
  • 国内餐饮设计网站建设建立网站步骤
  • 网站如何做监控直播常见的搜索引擎
  • 胶南网站建设价格优化大师兑换码
  • 如何做网站公司百度推广怎么样才有效果
  • 如何速发布wordpress开封seo推广
  • 做网站费用怎么付外链发布工具下载
  • 门户网站推广怎么做百家号查询排名数据查询
  • 企业网站整理优化百度推广好不好做
  • 网站开发报价表百度点击工具
  • 上海市建设安装协会网站用html制作淘宝网页
  • 网页动画是如何制作出来的seo交流qq群
  • 电子商务网站推广方法和技巧最新seo视频教程
  • 哪个网站做ppt模板赚钱竹子建站官网
  • 东莞网络营销外包报价长沙seo优化首选
  • php网站建设实例优化官网咨询
  • bch wordpress固定链接廊坊seo排名优化
  • 基于php网站开发环境郑州seo管理
  • wordpress模板用什么工具修改seo顾问咨询