假设我有一个关系模式如下
Emp(eid: integer, did: integer, sal: integer, hobby: char(20))
它有50000
个不同的记录,一个页面可以放入100
元组(这意味着有500
个页面。)
它在大小为B+
页的(Emp.did)
上有一个群集50
树索引。
如果我要进行EMP的索引扫描,并计算它的成本,我很困惑应该使用什么减少因子来计算它的成本?
应该是1/50000
还是1/50
?
答案 0 :(得分:0)
使用聚集索引涉及两个成本部分:
IO Cost的主要公式是(注意案例差异:其中#N =索引中的行数,#n =检索到的行数):
log(#N)
#n/100
而除数100对应于每个块的元组数。
实际数据库的详细计算通常会考虑更多因素(最突出的是CPU成本),也可能涉及其他一些启发式(例如,表示缓存/命中率,fragentation等)。
有关索引如何工作的更多信息:http://use-the-index-luke.com/sql/anatomy