美文网首页
主键索引和普通索引

主键索引和普通索引

作者: salix_ | 来源:发表于2020-03-27 19:38 被阅读0次

    一:主键索引和普通索引的定义

    主键索引:根据主键建立的索引
    普通索引:除了主键索引

    二:例子(网上找的图,主要看下面的解释)


    主键索引和非主键索引的示意图如下:

    从图中不难看出,主键索引和非主键索引的区别是:非主键索引的叶子节点存放的是主键的值,而主键索引的叶子节点存放的是整行数据,其中非主键索引也被称为二级索引,而主键索引也被称为聚簇索引。

    a:根据这两种结构我们来进行下查询,看看他们在查询上有什么区别。

    1、如果查询语句是 select * from table where ID = 100,即主键查询的方式,则只需要搜索 ID 这棵 B+树。
    2、如果查询语句是 select * from table where k = 1,即非主键的查询方式,则先搜索k索引树,得到ID=100,再到ID索引树搜索一次,这个过程也被称为回表。

    b:一定会回表吗?

    并不是如此,如果要查询的字段包含在查询的索引里面,就不用再回表。(这就是所谓的mysql索引覆盖
    Mysql覆盖索引详解

    三:主键索引的一些问题

    1. 如果没主键,主键索引咋办?

    mysql会创建一个隐藏列,叫rowid
    给个链接https://blog.csdn.net/a158123/article/details/89818537

    2.如果是联合主键,怎样建立聚簇索引

    对于(a,b)建立的索引是以a为非叶子节点的key,(a,b)为叶子节点的key进行查找。

    相关文章

      网友评论

          本文标题:主键索引和普通索引

          本文链接:https://www.haomeiwen.com/subject/lwjluhtx.html