Optimization
關於SELECT的成本優化公式的問題
我是電腦科學專業的學生,我有一個問題,涉及成本優化。我必須閱讀這本書(Elmasry 和 Navathe 的數據庫系統基礎)並嘗試在課堂上介紹這個主題。但是我在理解 B-tree-index 的一個成本公式時遇到了一些問題:
使用二級(B+-樹)索引:
$$ … $$如果比較條件是(> >=, <, <=),並且假設一半的文件記錄滿足條件,那麼(非常粗略地)一半的第一級索引塊被訪問,加上一半的文件記錄通過索引. 這種情況下的成本估計大約為 C=x+(b_l1/2)+(r/2)。$$ … $$ 使用線性搜尋:
$$ … $$C=b$$ … $$
在哪裡
x = number of levels of multilevel index r = number of records b = number of blocks b_li = number of first-level index blocks C = cost function
我不明白二級索引的公式。我認為公式應該是這樣的:
C=x+(b_l1/2)+(b/2)
有人可以解釋一下,為什麼公式使用條目數而不是塊數?
非常感謝
假設“第一級”是指非聚集(二級)索引的葉級,則該
b_li/2
部分佔通過這些索引塊的一半進行掃描(使用順序 I/O)的成本。假設“文件記錄”是指基表,則該
r/2
組件表示查找二級索引中不存在的附加數據的成本。由於這是預期會導致隨機 I/O 模式的每行成本,因此用r
.