随笔 - 136, 文章 - 0, 评论 - 14, 阅读 - 13万
  首页  :: 新随笔  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

影响MySQL 8.0单列索引长度的因素有哪些?

Posted on   高&玉  阅读(97)  评论(0编辑  收藏  举报

MySQL 8.0支持的单列索引长度最大是3072bytes,影响单列索引长度的因素有哪些:

  • innodb_page_size: InnoDB页大小,默认是16KB。支持5种size:4k、8k、16k、32k、64k。
  • row_format: 表的行格式,默认是“dynamic”。支持6种格式:DEFAULT、DYNAMIC、FIXED、COMPRESSED、REDUNDANT、COMPACT。
  • character set: 如果使用“utf8mb4”,假如存储的是中文,那么一个字符占3bytes,那么该列支持的索引长度最大为(3072/3=1024)1024个字符。假如存储的是字母,那么一个字符占1bytes,那么该列支持的索引长度最大为3072bytes。

在row_format=DYNAMIC或COMPRESSED的情况下,innodb_page_size的size决定支持的单列索引最大长度不同。

  • innodb_page_size=64KB,row_format=DYNAMIC或COMPRESSED,支持的单列索引最大长度是3072bytes。
  • innodb_page_size=32KB,row_format=DYNAMIC或COMPRESSED,支持的单列索引最大长度是3072bytes。
  • innodb_page_size=16KB,row_format=DYNAMIC或COMPRESSED,支持的单列索引最大长度是3072bytes。
  • innodb_page_size=8KB,row_format=DYNAMIC或COMPRESSED,支持的单列索引最大长度是1536bytes。
  • innodb_page_size=4KB,row_format=DYNAMIC或COMPRESSED,支持的单列索引最大长度是768bytes。

在innodb_page_size=16KB的情况下,row_format的格式决定支持的单列索引最大长度不同。

  • row_format=DYNAMIC或COMPRESSED,支持的单列索引最大长度是3072bytes。
  • row_format=COMPACT或REDUNDANT,支持的单列索引最大长度是767bytes。

参考:MySQL 8.0: InnoDB Limits

相关博文:
阅读排行:
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示