由浅入深理解索引的实现(2)
这篇讲的是数据库索引的实际实现,与教科书理论模型之间的关键差异。 作者以MySQL InnoDB引擎为例,重点剖析了一个核心设计权衡:为了提升更新性能和简化实现,InnoDB在二级索引(辅助索引)中,用主键值替代了传统B+Tree里指向数据页的指针。这直接改变了数据页与索引树之间的依赖关系。 这个设计的巧妙之处在于,它使得数据页的分裂、合并操作变得相对独立,只需影响聚簇索引。但代价是,通过二级索引查询数据时,需要多一次回表(先找到主键,再去聚簇索引定位),路径变长了。 文章由此引出实际查询操作的差异:用主键查询最直接,而用辅助索引则多一步。这也顺理成章地推导出性能优化建议——尽量使用主键查询,并让所有键列尽可能小。 总的来说,文章从具体实现细节出发,清晰地揭示了理论模型为工程落地所做的必要演变,以及由此带来的查询路径变化,对理解索引性能有直接的启发。