索引扫描关系的缩减因子

时间:2017-10-15 12:33:10

标签: mysql sql

假设我有一个关系模式如下

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

它有50000个不同的记录,一个页面可以放入100元组(这意味着有500个页面。)

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

如果我要进行EMP的索引扫描,并计算它的成本,我很困惑应该使用什么减少因子来计算它的成本?

应该是1/50000还是1/50

1 个答案:

答案 0 :(得分:0)

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

  1. 遍历B树
  2. 在叶节点列表后面找到所有匹配的行。
  3. IO Cost的主要公式是(注意案例差异:其中#N =索引中的行数,#n =检索到的行数):

    1. log(#N)
    2. #n/100
    3. 而除数100对应于每个块的元组数。

      实际数据库的详细计算通常会考虑更多因素(最突出的是CPU成本),也可能涉及其他一些启发式(例如,表示缓存/命中率,fragentation等)。

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