300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > mysql innodb 索引组织表_Mysql InnoDB引擎 -索引组织表

mysql innodb 索引组织表_Mysql InnoDB引擎 -索引组织表

时间:2021-12-06 08:53:38

相关推荐

mysql innodb 索引组织表_Mysql InnoDB引擎 -索引组织表

在InnoDB 存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的额表称为索引组织表。在InnoDB存储引擎表中,每张表都有个主键(Primary key),如果在创建表时 没有显示地定义主键,则InnoDB存储引擎会按如下方式选择或创建主键:

首先判断表是否有非空的唯一索引(Unique not null),如果有,则该列即为主键。

如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的指针。

当表中有多个非空唯一索引时,InnoDB 存储引擎将选择建表时第一个定义的非空唯一索引为主键。这里需要注意的是,主键的选择根据的是定义索引的顺序,而不是建表时列的顺序。看下面的例子:

上述示例创建了一张z表,有a、b、c、d四个列。b c d三列上都有唯一索引,不同的是b类允许NULL值。由于没有显式地定义主键,因此会选择非空的唯一索引,可以通过下面的SQL语句判断表的主键值:

_rowid 可以显示表的主键,因此通过上述查询可以找到表z的主键。此外,虽然c、d列都是非空唯一索引,都可以作为主键的候选,但是在定义的过程中,由于d 列首先定义为唯一索引,故InnoDB存储引擎将其视为主键。

另外需要注意的是,_rowid只能 用于查看单个类为主键的情况,对于多列组成的主键就显得无能为力了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。