mysql 聚合索引和聚簇索引_MySQL 聚簇索引 和覆盖索引

一.聚簇索引

1.聚簇索引并不是一种单独所以,而是一种数据储存方式。

InnoDB 的聚簇索引实际上在同一结构中保存了B-Tree 索引和数据行。

2.当表有聚簇索引时,它的数据行实际上存放在索引的叶子页中。“聚簇”表示数据行和相邻的键值紧凑的储存在一起。

3.对应InnoDB 来说如果表没有定义主键,会选择一个唯一的非空索引代替。如果没有这样的索引InnoDB 会隐式定义一个主键来作为聚簇索引。InnoDB 只聚集在同一页面中的记录。

4.聚簇索引的优势:

(1)可以把相关数据保存在一起。

(2)数据访问更快。数据和索引保存在同一个 B-Tree 。

(3)使用覆盖索引扫描的查询可以直接使用页节点的主键值

5.聚簇索引的缺点:

(1)聚簇索引最大的提高了I/O密集型应用的性能,但如果数据全部都放到内存中,则数据的顺序就没有那么重要了,聚簇索引也就没什么优势了。

(2)插入速度严重依赖插入顺序。按照主键插入的方式是InnoDB 速度最快的方式,但如果不是按照主键顺序加载数据,那么在加载后最好使用OPTIMIZE TABLE 命令重新组织一2下表

(3)更新聚簇索引列的代价很高。因为会强制InnoDB 将每个被更新的行移动到新的位置

6.二级索引

主键索引的叶子节点存的是整行数据,在InnoDB 里,主键索引也被称为聚簇索引

非主键索引的叶子节点内容是主键的值。在InnoDB 里。非主键索引也被称为二级索引。

如:select* from order where user_id=3; user_id是普通索引。则会先搜索user_id 的索引树,得到id=5,再到id 索引树搜索一次,这个过程就

你可能感兴趣的:(mysql,聚合索引和聚簇索引)