查询优化

用于估计代价的目录信息

n——关系r中的元组数目

b——含有关系r的元组的块数目

s——关系r中一个元组的大小

f——关系r的块因子,即一个块中能存放的关系r的元组数

V(A,r)——关系r中属性A所具有的不同值的数目。若A为关系r的码,V(A,r)即为n

SC(A,r)——关系r的属性A的选择基数。给定关系r及其属性A,假定至少有一条记录满足等值条件,那么SC(A,r)表示在属性A上满足某个等值条件的平均记录数。

fi——树形结构索引i的内部节点的平均扇出。

HTi——索引i的层数。平衡树:HTi=logfi(V(A,r)),散列:HT=1。

LBi——索引i中最底层索引块数目。

选择运算

1、线性搜索:n/f。

2、二分法搜索:E=[log2(b)+SC(A,r)/f] - 1。如假设属性值均匀分布,则查询σA=a(r)的SC(A,r)=nr/V(A,r)

利用索引选择:索引结构提供了定位和存取数据的一条路径。索引的使用带来了存取包含索引数据块的代价。

3、主索引,码属性等值比较:E=HT+1

4、主索引,非码属性等值比较:E=HT+[SC(A,r)/f]

5、辅助索引,等值比较:最坏情况,每条满足等值条件的记录存在于不同的块上,E=HT+SC(A,r)

6、主索引,比较:E=HT+c/f

7、辅助索引,比较:假定至少有一半记录满足条件,则要存取一般的最底层索引块,并通过索引存取一般数目的文件记录,囧过从索引根块到使用的第一个索引块的一条路径,E=HT+LB/2+n/2

复杂选择的实现:

合取:预计对选择σ(r)的结果大小估计大小为s,关系中一个元组满足选择条件θ的概率为s/nr。假设个条件相互独立,则某条记录满足全部条件的概率是全体概率的乘积,nr*(s1*s2……*sn)/(nr^n)

析取:1减去条件全不满足的概率,1-(1-s1/nr)*…*(1-sn/nr)

8、利用一个索引的合取选择:首先判断是否存在某个简单条件中的某个属性上的一条存取路径,若存在,用上面的选择算法之一可以用来检索满足改条件的记录。

9、使用组合索引的合取选择。

10、通过标识符的交集实现合取选择:如果条件所涉及的字段上有带记录指针的索引,对每个索引进行扫描,获取那些只想满足单个条件的记录的指针,取交集。

11、通过标识符的病机实现析取选择。

注意考虑索引是否具有聚集特性。

排序

对不能全部放在内存中的关系进行排序称为外排序。

外部排序归并算法:

(M表示内存中用于缓冲的页面数)

(1)建立多个排序的归并段文件:

i=0;

repeat

读入M块关系数据或剩下的不足M块数据;

在内存中对关系的这一部分进行排序;

将排好序的数据写到归并段文件Ri中;

i=i+1;

until 到达关系末尾

(2)对归并段文件归并。为N个归并段文件Ri各分配一页内存缓冲页,并分别读入一数据块

repeat

在所有缓冲页中按序挑选第一个元组;

把该元组作为输出写出,并将其从缓冲页中删除;

if 任何一个归并段文件Ri的缓冲页为空并且没有到达Ri末尾

then 读入Ri的下一块到相应的缓冲页;

until 所有的缓冲页均为空

br(2[logm-1(br/M)]+1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值