聚簇索引、非聚簇索引、覆盖索引
2014-05-20 20:56
281 查看
1 聚簇索引:clustered index 其实数据存储结构,索引和记录(全部)内容保存同一个结构中。“聚簇”就是索引和记录紧密在一起,分开就不是聚簇索引了,所以一张表只能有唯一的聚簇索引。附带问,能有多少二级索引呢?为什么?
2 非聚簇索引:secondary index ,叶子节点保存了主键值,要定位记录还要再查一遍聚簇索引。
3 覆盖索引:覆盖索引是指索引的叶子节点已包含所有要查询的列,因此不需要访问表数据(回表~~有学个名词,查询聚簇索引)
查找时能不能直接定位:聚簇索引的叶节点就是数据节点,而非聚簇索引的页节点仍然是索引检点,并保留一个链接指向对应数据块。
物理排序:聚簇索引对数据进行物理的排序,非聚簇索引不对数据进行物理排序
参考追风刀这个,实例分析聚簇索引不一定比非聚簇索引快~~~:
聚簇索引、非聚簇索引、覆盖索引 例子:http://csrd.aliapp.com/?p=406#more-406
覆盖索引:http://blog.csdn.net/dbanote/article/details/16822687
使用聚簇索引导致了全表扫描,加载每一页数据,使用非聚簇索引的sql语句使用范围查询缩小了范围。
一些DBMS允许用户指定聚簇索引,但是MySQL的存储引擎到目前为止都不支持。InnoDB对主键建立聚簇索引。如果你不指定主键,InnoDB会用一个具有唯一且非空值的索引来代替。如果不存在这样的索引,InnoDB会定义一个隐藏的主键,然后对其建立聚簇索引。
2 非聚簇索引:secondary index ,叶子节点保存了主键值,要定位记录还要再查一遍聚簇索引。
3 覆盖索引:覆盖索引是指索引的叶子节点已包含所有要查询的列,因此不需要访问表数据(回表~~有学个名词,查询聚簇索引)
查找时能不能直接定位:聚簇索引的叶节点就是数据节点,而非聚簇索引的页节点仍然是索引检点,并保留一个链接指向对应数据块。
物理排序:聚簇索引对数据进行物理的排序,非聚簇索引不对数据进行物理排序
参考追风刀这个,实例分析聚簇索引不一定比非聚簇索引快~~~:
聚簇索引、非聚簇索引、覆盖索引 例子:http://csrd.aliapp.com/?p=406#more-406
覆盖索引:http://blog.csdn.net/dbanote/article/details/16822687
使用聚簇索引导致了全表扫描,加载每一页数据,使用非聚簇索引的sql语句使用范围查询缩小了范围。
一些DBMS允许用户指定聚簇索引,但是MySQL的存储引擎到目前为止都不支持。InnoDB对主键建立聚簇索引。如果你不指定主键,InnoDB会用一个具有唯一且非空值的索引来代替。如果不存在这样的索引,InnoDB会定义一个隐藏的主键,然后对其建立聚簇索引。
相关文章推荐
- 聚簇索引、非聚簇索引、覆盖索引
- 聚簇索引与索引覆盖
- 学习笔记--mysql索引(五) 聚簇索引和覆盖索引
- MYSQL索引:对聚簇索引和非聚簇索引的认识
- 高性能Mysql - 创建高性能的索引(下)(聚簇索引,覆盖索引,全文索引)
- MYSQL索引:对聚簇索引和非聚簇索引的认识
- 聚簇索引、二级索引、覆盖索引
- 聚簇索引、非聚簇索引、二级索引
- mysql中的索引(聚簇索引和非聚簇索引)
- 覆盖索引
- 聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Index)举例说明
- MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析
- 【索引】 聚簇索引和非聚簇索引区别
- MySql(三): 覆盖索引( Covering Index )
- MySQL_索引_mysql高效索引之覆盖索引
- MySQL之高效覆盖索引
- 高性能的MySQL(5)索引策略-覆盖索引与索引排序
- SQL SERVER索引优化系列之一:工作原理&聚簇索引|非聚簇索引
- 理解MySQL数据库覆盖索引
- 聚簇索引(Clustered Index)和非聚簇索引 (Non- Clustered Index)举例说明