正向索引、反向索引、B*Tree索引

来源:互联网 发布:红色警戒找矿软件 编辑:程序博客网 时间:2024/05/01 07:56

索引就是为了更快的找出需要的信息。 一般都要进行排序。

 

正向索引----开发出来用来存储每个文档的单词的列表。实际上,时间、内存、处理器等等资源的限制,技术上正向索引是不能实现的。既:存储一个文档中有那些单词。有多少单词就有多少列。然后对每一列进行某种排序。

 

反向索引----其中每条记录,记录的是一个单词都在那些文档中出现。然后对这些记录进行排序。http://zh.wikipedia.org/wiki/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95

 

B*Tree索引----就是B*Tree排序。

----------------------------------------------------------------------------------------------------

具体:B*Tree索引

  B*Tree索引是最常见的索引结构,默认建立的索引就是这种类型的索引。B*Tree索引在检索高基数数据列(高基数数据列是指该列有很多不同的值)时提供了最好的性能。当取出的行数占总行数比例较小时B-Tree索引比全表检索提供了更有效的方法。但当检查的范围超过表的10%时就不能提高取回数据的性能。B-Tree索引是基于二叉树的,由分支块(branch block)和叶块(leafblock)组成。在树结构中,位于最底层底块被称为叶块,包含每个被索引列的值和行所对应的rowid。在叶节点的上面是分支块,用来导航结构,包含了索引列(关键字)范围和另一索引块的地址,如图26-1所示。

  假设我们要找索引中值为80的行,从索引树的最上层入口开始,定位到大于等于50,然后往左找,找到第2个分支块,定位为75-100,最后再定位到叶块上,找到80所对应的rowid,然后根据rowid去读取数据块获取数据。如果查询条件是范围选择的,比如where column>20 and column<80,那么会先定位到第一个包含20的叶块,然后横向查找其他的叶块,直到找到包含80的块为止,不用每次都从入口进去再重新定位。

------------------------------------------------------------------------------------------------------

原创粉丝点击