首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在explain语句中使用MySQL key_len来定义一个sql是否快速?

问如何在explain语句中使用MySQL key_len来定义一个sql是否快速?
EN

Stack Overflow用户
提问于 2021-11-25 09:30:56
回答 2查看 136关注 0票数 1

key_len列指示MySQL决定使用的键的长度。

MySQL的文档处理这个。但是我不知道如何使用这个语句来定义sql是快速的还是不快的。key_len越小,sql的速度越快(请原谅我的英文grammarT_T)?它是如何工作的?

期待你的回答。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-25 10:15:29

此参数仅适用于复合键。服务器可以完全使用整个索引,也可以只使用它的某个前缀。key_len允许定义复合索引的前缀部分。

演示

票数 1
EN

Stack Overflow用户

发布于 2021-11-26 03:54:00

(除了阿金娜说的.)

key_len有点让人困惑。

  • 它包括在WHERE中使用的列的长度。
  • 它不包括用于“覆盖”或GROUP BY或ORDER BY的列。
  • 长度为NULLable添加1,对于'VARCHAR‘添加1或2,为utf8mb4排序规则添加4倍,等等。
  • 尽管VARCHAR(100)将显示key_len为402,但索引中使用的实际空间将取决于实际文本。带有"Hello“的行将占用5+2字节。
  • key_len的大小与性能的相关性很小。它确实与所涉及的列的大小有关。性能中最重要的因素是所触及的行数--无论是在索引中还是在数据中。(这是两个独立的BTrees -在“辅助键”的情况下)。
  • key_len对数据没有影响,只对索引的BTree有影响。
  • InnoDB以16 of为单位获取BTree块。
  • 一个更大的键(通常)意味着每个块的条目很少。这可以减缓查询的速度。
  • 另一方面,由于最近执行的查询,您需要的块很可能被缓存在buffer_pool中。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70108680

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档