B树索引如何在mysql中工作

问题描述 投票:12回答:2

[当我在mysql中为表创建索引时,我看到index_type是类型BTREE。现在,尽管我了解btree,但我并没有默默了解btree如何存储索引以及数据库如何基于此来搜索记录。

我的意思是,btree非常适合数据库执行读写大数据块,当我们为Primary key的列类型创建索引时,据我所知,它会创建一棵树并根据根的值类型拆分根的值。

现在,它是否仅在树下存储主键ID或与该主键关联的整个数据?

找到所需的主要ID后,数据库如何提取记录?

mysql database search b-tree
2个回答
21
投票
[每当您搜索包含某个索引列的某个值的记录时,引擎都会在B-Tree中找到保存该值的键,检索指向该记录的指针并获取该记录。

什么是“记录指针”,取决于存储引擎。

    MyISAM中,记录指针是MYI文件中记录的偏移量。
  • InnoDB中,记录指针是PRIMARY KEY的值。

  • InnoDB中,表本身是B-Tree,其中PRIMARY KEY作为B-Tree键。这就是所谓的“聚集索引”或“索引组织表”。在这种情况下,所有其他字段都存储为B-Tree值。

    MyISAM中,记录存储时没有任何特殊顺序。这称为“堆存储”。


  • 0
    投票
    例如:

    仅叶子节点具有允许同一页面节点中的更多键减少树高的值,这将减少I / O计数。

    在每个叶节点中添加双向指针以使范围搜索更快

    B树

    B-Tree

    B +树

    B+Tree

    © www.soinside.com 2019 - 2024. All rights reserved.