要知道磁盘结构优化访问的关键在于以block为单位(比如每次读取一个页面)
这两种索引差别也就在聚集到一个block的标准:
B树聚集到一个block是因为关键字在一个范围内,关键字在block内的排列是有序的,而且这种有序结构是自根节点向叶节点的整体
Hash索引聚集到一个block是因为hash得到的值是一致的,通过增加一层间接索引,我们也能使得不同hash值的数据放到一个block里面,当一个block内聚集的数据太多的时候,我们可以有扩展块!
关于伴随数据的问题:
一般B树索引的数据在叶节点,只有这样,查询一个范围内的关键字这种操作才能得到优化
hash索引,叶节点里面也可以是指针,因为反正优化不了范围查询。
无论那种索引,对于查询具有特点关键字值的元素都有优化的效果。
除开对于主键的索引外(也就是数据实际是按照那个组织的)
只有两种情况有较有意义的优化效果:
1关键字几乎是键值,这样导致我按照某个给定关键字查询的时候结果项本来就很少,不用读很多block
2 实际的数据关于关键字聚集,这样我即使按照某个关键字查询的时候结果项很多,也不至于要读取太多的block(因为大家都在一块儿)