zoukankan      html  css  js  c++  java
  • mysql B+Tree索引的一点理解

    1.聚集索引

    聚集索引就是按照每张表的主键构建一个B+树,同时叶子节点中存放的即为整行记录,聚集索引这个特性决定了索引组织表中的数据也是索引的一部分,同时B+树数据数据结构一样,每个数据页都通过一个双向链表来记性链接(通过主键查询是不需要进行回表操作的)

    2.辅助索引

    辅助索引又被称为非聚集索引,叶子节点并不包含行记录的全部数据,叶子节点除了包含键值以外,还包含主键键值,如果谓词条件中只有辅助索引包含的列,那么需要从辅助索引的根节点找到叶子节点,通过叶子节点对应的主键键值,再从主键索引的根节点找到主键索引的叶子节点,然后将数据取出来

    数据库执行一下查询,通过辅助索引name这个列的过程就是如下所示:

    create table t1(id int,name varchar(20),class int,primary key(id),key(name));

    select id,name,class from t1 where name='xxx';

    3.引申问题

    1.当某个表没有创建主键索引,仅仅创建了一个普通索引,那么MySQL是如何进行检索数据的呢?

    MySQL会默认生成一个6字节的指针_rowid,这里的普通索引存放的就是(键值,_rowid),以此来进行数据的访问,但是这个是有长度限制的,当到达2^48这个值之后,就会从0继续开始,如果我们的数据足够大,那么这个值是可以达到的,对于没有主键的查询显然是不准确的,可能一个查询会返回两个值。这就是为什么MySQL一定要创建主键索引的原因。

    2.当某个表没有主键索引,只有一个普通非唯一索引,添加主键索引会发生什么呢?

    根据我的理解,表会进行重建,根据非聚集索引定义,非聚集索引要存放主键索引的键值,因此也会进行重建。

     

  • 相关阅读:
    《圣女贞德》全技能合成表(psp)
    [转] 委外加工Procurement
    SAP HR TCode List
    IDES ABAP/4破解及client copy [转]
    [ SAP Interview ] SAP Basis Consultant Questionnaire
    [FI/CO] Controlling Question From Key User / Q & A
    SAP Monthly Closed
    [SAP Dictionary]
    UI Leader infragistic 2008 CLR download address link (Infragistics NetAdvantage For .NET 2008 CLR)
    SAP SubContract Processing
  • 原文地址:https://www.cnblogs.com/hanglinux/p/15247411.html
Copyright © 2011-2022 走看看