gpt4 book ai didi

mysql - 数据库索引中存储的值是什么?

转载 作者:行者123 更新时间:2023-11-29 10:38:23 25 4
gpt4 key购买 nike

据我了解,关系型数据库(例如 mysql)使用 hashmap 或 B+trees 进行索引。 B+tree 中存储的值是多少?是为其创建索引的键的哈希值吗?还是键值本身?

最佳答案

我们只讨论 ENGINE=InnoDB

索引是 BTree;没有哈希索引,也没有哈希字符串。 (还有 FULLTEXTSPATIAL。)

数据位于按主键排序的BTree中。我们说PK是“集群式”的。

每个“辅助键”都位于一个单独的 BTree 中,按键列排序。叶子中是 PK 的副本,以便它可以到达以获取其余的列。

除了开销之外,INT 在索引中占用 4 个字节; VARCHAR 需要足够的文本空间,加上 1 或 2 字节的长度。等等

是的,通常 VARCHARINT 更大。但这并不一定是坏事。例如,如果您有一个 VARCHAR 的“自然”PK,则可能有(也可能没有)理由创建 INT AUTO_INCRMENT 作为 PK。给我看一个例子CREATE TABLE;我会批评索引。

关于mysql - 数据库索引中存储的值是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45993836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com