[聚合文章] 聚簇索引和二级索引

MySQL 1900-01-01 25 阅读
image.png

从上图中我们发现,该B*tree根据plname列进行构建的,只存储索引数据,plname 和 id 的映射。

比如查找 编程语言为“Java”的数据。
select id, plname, ranking from pl_ranking where plname='Java';
首先通过二级索引树中找到 Java 对应的主键id 为 “16”(读取2个磁盘块)。
然后在去主键索引中查找id为“16” 的数据。(读取3个磁盘块)

结论

select id, plname, ranking from pl_ranking where id=16;
根据主键查找只需要查找3个磁盘块
select id, plname, ranking from pl_ranking where plname='Java';
根据编程语言名称查询需要读取5个磁盘块

结论一

通过上面的主键索引和非主键索引的例子我们可以得出:
主键索引(聚餐索引)查询效率比非主键索引查询效率更高。如果能使用主键查找的,就尽量使用主键索引进行查找。

结论二

从上面图中我们还可以分析得出以下结论:
主键定义的长度越小,二级索引的大小就越小,这样每个磁盘块存储的索引数据越多,查询效率就越高。

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。