您的位置:首页 > 数据库 > MySQL

MySql中InnoDB引擎索引

2016-05-01 15:06 621 查看
Mysql中InnoDB引擎的索引分两类,一类是一级索引(主键的同义词),一类是二级索引(非主键的索引)。两类索引都使用B+tree形式组织,但一级索引的叶子节点包含所以对应的整行信息,所有的查询最终都是通过一级索引完成,二级索引只包含二级索引对应的一级索引。所以直接使用一级索引比用二级索引快,因为少了一系列二级索引到一级索引的磁盘I/O。同时,使用主键查询时,这种数据组织方式也比数据和索引分开要快一次磁盘I/O操作。(MyISAM使用数据和索引分离的组织方式)

一级索引只有一个,毕竟主键最多只有一个,但二级索引可以有多个,因为一张表可以建立多个非主键索引。但每次查询只会选择一个索引。

MySql会按照以下规则建立一级索引:

如果定义了主键,那么MySql会选择主键作为一级索引;

如果没有定义主键,那么MySql会选择第一个定义了非空的唯一索引(UNIQUE AND NOT NULL)作为主键,并且作为一级索引;

如果没有定义主键也没有定义非空的唯一索引,那么MySql会隐式的生成一级索引,索引的列是MySql为每一行数据生成的行号。行号是一个6字节的数,按照插入顺序单调递增。

参考链接:

http://dev.mysql.com/doc/refman/5.0/en/innodb-index-types.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 索引 InnoDB