Schema的优化和索引 - 高性能的索引策略 - 聚簇索引(Clustered Indexes)
2009-09-02 00:00:00 来源:WEB开发网核心提示: 那么col2是什么样子的?和上面的有什么区别?,其实没有任何区别,Schema的优化和索引 - 高性能的索引策略 - 聚簇索引(Clustered Indexes)(4),和其他索引也一样,事实上,这个策略就会降低维护次要索引的工作量了,使用行的主键作为指针会使索引变大,在MyISAM中,在主键
那么col2是什么样子的?和上面的有什么区别?。其实没有任何区别。和其他索引也一样。
事实上,在MyISAM中,在主键和其他键的索引结构上并没有区别。一个主键就是唯一的,不能为NULL,并命名为PRIMARY的索引。
InnoDB 数据布局
InnoDB存储同样的数据,是和MyISAM不一样的,因为聚簇的结构。如图,InnoDB存储表。
乍看起来,并没有和上一张图有什么区别。但是再一看,这个示例显示的是整个表,而不仅仅是索引。因为聚簇索引在InnoDB中就是一张表。并不像MyISAM有独立的行存储。
在聚簇索引中的每个叶子节点都包含了主键,事物ID,用来MVCC和事务的回滚指针,还有就是剩下的列。如果主键在一个列的前缀上,InnoDB就包括这个列的值和剩下的所有的列。
相比较MyISAM,次要索引和聚簇索引也不是很相同。InnoDB次要索引的叶子节点包含了主键的值,就像指向行的指针一样。当移动行或者数据页的分裂,这个策略就会降低维护次要索引的工作量了。使用行的主键作为指针会使索引变大,但是也意味着InnoDB在移动行的时候不会更新指向这行的指针。
下面就是次要索引在col2的图
更多精彩
赞助商链接