2017-10-15 95 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