【发布时间】:2016-03-16 21:26:15
【问题描述】:
目前我正在阅读有关B+ Tree 的基础知识,并且对聚集和非聚集索引的空间分配感到困惑。
当我们在B+ tree 上创建聚集索引时,索引存储在主内存中,叶子包含指向实际块的数据指针。块存储在磁盘中,并且块包含记录。
- 通常在主键上创建聚集索引
- 只能有一个聚集索引
现在假设我们有一个表(id、name、class),我在name 和class 上创建了两个非聚集索引。 我怀疑非聚集索引将存储在哪里?以及如何为query 执行搜索,例如
select id, name, class from table where id = 3, name='Leo' and class='10'
我的假设:
- 由于 id 字段是主键,所以首先使用聚集索引将 id = 3
- 现在使用
name和class上的非聚集索引,我们将找到剩余的字段
你认为我的假设是对的吗?您能否详细说明有关存储聚集索引的信息? 索引(聚集和非聚集形成 n 叉树吗?)。我无法同时可视化聚集索引和非聚集索引。
【问题讨论】:
标签: mysql sql indexing b-tree clustered-index