2017-10-15 93 views
1

折减系数说我有一个关系模式如下索引扫描关系

Emp(eid: integer, did: integer, sal: integer, hobby: char(20)) 

50000重复的记录,和页面可以容纳100元组(这意味着有500页)。

它在(Emp.did)上有一个聚集的B+树索引,大小为50页。

如果我做EMP的索引扫描,并计算它的成本,我很困惑,什么因子分析,我应该利用来计算它的成本是多少?

它应该是1/500001/50

+0

你是什么意思的“折减系数”吗?我看到的唯一引用是结果集中元组的数量与正在处理的数据中元组的数量之间的比率。 –

+0

计算成本的公式是这样的:成本=(NPages(I)+ NPages(R))* RFi,我在这里有点失落,关于我是否应该考虑在任何时候使用1/50000或者想从这是一个索引扫描我需要找到其他的东西/ –

+0

你是什么意思?它有一个聚集的B +树索引(Emp.did)**大小为50页**。 – L30n1d45

回答

0

使用聚簇索引涉及到两个成本部分:

  1. 遍历B树
  2. 继叶节点列表中查找所有匹配的行。

为IO成本的主要公式(注意的情况下区别:其中#N =在指数的行数,检索#N =行数):

  1. log(#N)
  2. #n/100

鉴于除数100对应于每个块的元组的数量。

通过实际数据库中的详细的计算通常考虑多个因素(最显着的CPU成本太),并且还可能涉及一些其它启发式(例如,以表示高速缓冲存储器/命中率,fragentation或类似物)。

更多有关索引是如何工作的:http://use-the-index-luke.com/sql/anatomy

+0

链接无法访问。 – L30n1d45

+0

@ L30n1d45链接固定。抱歉。 –

+1

谢谢,你有一个体面的博客。 – L30n1d45