【发布时间】:2011-03-11 15:31:34
【问题描述】:
我马上就要考试了,我想知道如何解决这些关于索引的问题:
1. 数据库由关系 R(A,B,C) 组成。 A 和 B 是整数 [0,10 000](每个 4B),C 是 varchar(20) (20B)。关系 R 由 10^6 个元组组成。块大小为 2048 B。
A) 如果我们询问这个查询是否在 B 上有 B+-tree 索引,我们必须读取多少块(最佳和最差):
从 R 中选择 C,其中 A=100 和 B=10
B) 索引 A 有意义吗?如果是,哪种类型的指标最好?
另一个类似的问题是:
2.数据库由关系 R(A,B,C) 组成。 A 和 B 是整数 [0,10 000],C 是 varchar(150)。关系 R 由 10^6 个元组组成。块大小为2048 B,A、B为key。
A) 如果我们询问查询“SELECT C FROM R WHERE A=4711 并且:
在最佳和最坏情况下我们必须读取多少块- 我们没有索引。
- 我们在 A 和 B 上有一个 B+-tree 索引。
b) 单独索引 B 和单独索引 A 是否有意义,而不是在 A 和 B 上设置一个索引。哪种类型的索引最好?
编辑:
这是我所做的:
问题 1 A)
元组的大小 = 20+4+4=28 B
2048/28=73 元组/块向下舍入
10^6/73= 13 699 个块用于整个关系,向上取整
索引读数: 4*n+4(n+1) n=255 向下取整
B+树的第一层= 255
第二层B+树= 255*256
B+树的第三层= 255*256*257>10^6 是的,10^6 个元组可以放入高度为 3 的 B+树。
数据读取: 如果我们假设 A=100 的概率为 1/10001,B=10 的概率相同,那么我们有:
1/10001*1/10001*10^6 向上取整 = 1 个元组
在最坏和最好的情况下:1 个元组 = 1 个块
然后我们有 3+1 块读取
对吗?
我不知道怎么做 B)..
我真的不知道如何回答问题 2 .. 请帮帮我
【问题讨论】:
-
如果您将您的工作展示到卡住的地步,您可能会很快得到回复。仅仅在 SO 上倾倒作业问题被认为超出了网站的发布指南。
-
完成。我希望你们现在能帮助我。
标签: database indexing tuples relation