1. 1、本文档共79页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
4索引结构剖析

* * 多维索引 三种处理策略: 1.利用branch-name上的索引,找出名字排在Perryridge之前的分支机构的所有记录。检查每条记录是否满足balance=1000。 2.利用balance上的索引,找出所有余额等于1000美元的记录。检查每条记录是否满足branch-name Perryridge。 3.利用branch-name上的索引找出指向排在Perryridge之前的分支机构的记录的所有指针。同样,利用balance上的索引找出指向余额等于1000美元的记录的所有指针。计算这两个指针集合的交。交集中的所有指针指向满足条件的记录。 如果 满足branch-name“Perryridge“的记录很多 满足balance = 1000的记录很多, 而满足branch-name“Perryridge“ and balance = 1000的记录很少 则为了得到一个很小的结果集需要扫描大量指针 /79 * 多维索引 另一种情况,假设已经在搜索码(branch-name,balance)上建立了索引,并使用该索引来回答查询。 在搜索码值小于等于“Perryridge,1000”的记录中,找出余额等于1000美元的那些记录。然而,搜索码值小于等于“Perryridge,1000”的记录可能很多,而其中满足balance=1000的记录可能很少,因此大量的磁盘访问实际上都是不必要的。 如果例子中的查询发生频率很高,则可以考虑建立多维索引。 /79 * 多维索引 多维索引结构 网格文件 位图索引 k-d树 四分树 R树 /79 * 网格文件 针对前面一般的多维索引的缺陷,为了加速处理一般的有多个搜索码的查询,网格文件提供了一种对于多个属性索引的一般方法。它是由一维散列表推广得到的一种类散列结构,但它通常不是按维来散列值,而是通过排序每一维的值来划分该维。 网格文件的数据结构: 网格数组:假设网格文件中的维数为n,这n维数组就称为该文件的网格数组或网格矩阵。 线性标量:网格文件中的每个一维数组 。 一般只考虑二维的情况,较少考虑和使用高维的情况。 /79 * 网格文件 Townsend Perryridge Mianus Central 桶Bi 桶Bj 1K 2K 5K 10K 50K 100K 0 1 2 3 4 5 6 4 3 2 1 0 4 3 2 1 1 2 3 4 5 6 balance上的线性标量 branch-name上的线性标量 网格数组 图例 account文件上基于码branch-name和balance的网格文件 注:每条网格线与相应的线性标量上的某个值一一对应,网格线间的距离可以不同,每维上的网格线数目也可不同。 /79 * 网格文件 搜索码映射到网格数组的单元中的方式:假设我们要往网格文件索引中插入一条搜索码值为(F1,F2)的记录,为了找出这个码映射到哪个单元,我们分别定位出该单元所属的行和列。 首先 用F1所对应的线性标量数组找出该搜索码值映射到的单元的行号,我们搜索该数组找出比F1大的最小元素。如果是第i个元素,该搜索码值将映射到网格数组的第i-1行。如果该搜索码值大于或等于线性标量中的所有元素,它将映射到最后一行,用类似的方法可确定将要映射到的单元的列号。 例:在网格文件索引中插入下列搜索码值的记录 (“Brighton”,500 000)和(”Downtown”,60 000) 它们都指向标记为Bj的桶。 /79 * 网格文件 网格文件的查找: 对例 branch-name“Perryridge”and balance=1000 在查找时我们利用branch-name上的线性标量找出所有支行名比”Perryridge”小的所有行。在此例中这些行为0、1和2。类似的我们找到只有列1能包含值为1000的balance值。因此,只有列为1,行为0、1和2的单元能包含满足条件的项。 我们继续查找这些单元指向的桶中的所有项,因为桶中可能包含不满足所需条件的搜索码值,因此要再次检查桶中的每个搜索码值,找出符合搜索条件的记录的指针。 回答这个查询时,我们只要检查少数几个桶 /79 * 网格文件 网格结构也适用于只含一个搜索码的查询。我们可以使用两个搜索码上的网格文件索引来回答对其中任一个搜索码进行的查询和同时对两个搜索码进行的查询。维护网格文件索引的代价相比之下也低得多。 /79 * 网格文件 网格文件的插入 当我们往网

文档评论(0)

jiayou10 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8133070117000003

1亿VIP精品文档

相关文档