Optimization

關於SELECT的成本優化公式的問題

  • May 4, 2016

我是電腦科學專業的學生,我有一個問題,涉及成本優化。我必須閱讀這本書(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.

引用自:https://dba.stackexchange.com/questions/137416