美文网首页
5.3 聚簇索引 非聚簇索引 覆盖索引

5.3 聚簇索引 非聚簇索引 覆盖索引

作者: 愤愤的有痣青年 | 来源:发表于2019-09-29 08:25 被阅读0次

聚簇索引

聚簇索引是指索引的叶子节点中存储了整行数据,因此在查询时可以直接通过该索引一次得到该行的所有数据.一般聚簇索引的前提是:

    1. 字段为该表主键
    1. 一个表中只有一个聚簇索引(但可以通过覆盖索引的方式来模拟聚簇索引的特性)
    1. 索引的存储结构只能为B+Tree

每个表中都有一个聚簇索引,一般为该表主键,若该表主键没有显示指定,则其为数据库内置的一个主键.

表的数据都是存储在聚簇索引中的.

主键

对于主键,在设计的时候,需要注意一下几点:

    1. 最好不要使用随机值,随机值会使表的存储顺序随机,不能发挥数据的聚集优势
    1. 最好使用递增的数据作为主键(此方式在高并发环境下可能不适用,因为在插入的时候可能会造成主键争用,从而导致锁竞争)

非聚簇索引

一个表中除了聚簇索引外都是非聚簇索引(好像有点废话),其在查询时一般会通过索引得到主键的值,然后再拿主键的值去查询聚簇索引得到最终的数据行,这样的查询叫二级索引,或者也叫回表.但是也有例外,如下面的覆盖查询中的情况就不会进行回表.

覆盖索引

覆盖索引是指,在表中有一个联合索引,若查询时,查询时select的字段为该索引的一个项,且where的也是该索引的一个项,此时就可以通过索引一次性拿到查询结果.

例如 Student表中有字段numbername,且这两个字段组成联合索引key(number,name),则使用如下查询将使用覆盖索引查询:
select name from Student where number=1

相关文章

  • 5.3 聚簇索引 非聚簇索引 覆盖索引

    聚簇索引 聚簇索引是指索引的叶子节点中存储了整行数据,因此在查询时可以直接通过该索引一次得到该行的所有数据.一般聚...

  • MySQL索引

    聚簇索引和非聚簇索引 只有Innodb有聚簇索引,MyISAM引擎没有聚簇索引。 主键一定是聚簇索引,MySQL的...

  • 索引

    聚簇索引 主键索引,子节点存了整条数据的索引成为聚簇索引,反之子节点只存了主键的称为非聚簇索引 覆盖索引:当查询的...

  • MySql索引详解

    常见索引类型(实现层面) 索引种类(应用层面) 聚簇索引与非聚簇索引 覆盖索引 最佳索引使用策略 1.常见索引类型...

  • MySQL:聚簇索引

    什么是聚簇索引?什么时候使用聚簇索引和非聚簇索引? 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据非...

  • 数据库

    介绍一下聚簇索引和非聚簇索引 聚簇索引(innobe)的叶子节点就是数据节点 而非聚簇索引(myisam)的叶子节...

  • MySql数据库相关

    聚簇索引与非聚簇索引(也叫二级索引) 通俗点讲 聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据 非聚...

  • 索引

    mysql中的索引 MySQL中普遍使用B+Tree做索引,但在实现上又根据聚簇索引和非聚簇索引而不同。 聚簇索引...

  • 聚簇索引和非聚簇索引

    聚簇索引:索引的叶节点就是数据节点。innodb 非聚簇索引:非聚簇索引的叶节点仍然是索引节点,只不过有一个指针指...

  • # 索引

    InnoDB来说:主键=聚簇索引(clustered index ),非主键=非聚簇索引=是二级索引=辅助索引(s...

网友评论

      本文标题:5.3 聚簇索引 非聚簇索引 覆盖索引

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