B-tree索引如何在mysql中工作

JPr*_*Pro 12 mysql database search b-tree

当我在mysql中为表创建索引时,我看到index_type是type BTREE.现在虽然我了解btree(s),但我并不清楚它是如何存储索引以及数据库如何基于此搜索记录的.

我的意思是,btree非常适合数据库执行读取和写入大块数据,当我们为列类型创建索引时Primary key,我理解的是,它创建一个树并根据值的类型分割根的值.根.

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

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

Qua*_*noi 21

数据库存储索引为B-Tree键的值,并将记录指针存储为B-Tree值.

每当您搜索包含索引列的特定值的记录时,引擎会找到包含此值的键B-Tree,检索指向记录的指针并获取记录.

究竟什么是"记录指针",取决于存储引擎.

  • MyISAM,记录指针是MYI文件中记录的偏移量.

  • InnoDB,记录指针是的值PRIMARY KEY.

InnoDB,表本身是B-TreePRIMARY KEY作为B-Tree的关键.这就是所谓的"聚簇索引"或"索引组织表".在这种情况下,所有其他字段都存储为B-Tree值.

MyISAM,记录存储没有任何特殊顺序.这称为"堆存储".

  • @JPro:您可以在一个查询中自由混合不同的引擎.但请注意,"MyISAM"没有事务支持,并且在稍后回滚的同一个"DML"查询中使用多个表时,请注意回滚不会影响对"MyISAM"表的更改.但是,再次,在一个`SELECT`查询中,混合两个引擎是完全可以的. (2认同)