我正在做一些准备形式我的数据库决赛,我正在堆叠这个问题。我有答案,但我不确定我的步骤是否正确。如果你能告诉我我的答案中是否有正确的逻辑,我将不胜感激。谢谢
假设EMPLOYEE表有2000个元组。它有一个主键 名为ID的列,其范围为[1 - 2000]。它还有一个专栏 叫做DOB(出生日期)。其中有250个不同的DOB值 员工(即平均四名员工共享相同的DOB)。 假设20个EMPLOYEE元组可以放入磁盘块中。每 下面给出的场景是独立的,这是因为ID被编入索引 一个场景并不意味着它在其他场景中被编入索引。
假设EMPLOYEE在ID属性上有一个稀疏的B + -tree索引。 索引中的每个节点的最大扇出为100(每个节点在 树可以有100个孩子)。索引中的每个节点都已满50%。 (一个) 索引占用多少个磁盘块? (b)以下查询 将在最坏的情况下读取多少磁盘块(给出一个确切的 数字,例如,50)?
SELECT * FROM EMPLOYEE WHERE ID = 80;
(c)以下查询将读取多少个磁盘块?请注意这一点 查询项目ID。
从EMPLOYEE WHERE ID中选择ID ID> 1500;
(d) 以下查询将读取多少个磁盘块?
SELECT MAX(ID) FROM EMPLOYEE;
A)我对此的看法是,如果索引(20000/200)中有100个条目,则每个块中有50个条目。所以2个条目用于条目和一个根块。
B)因为它是一个稀疏索引,所以它将读取顶层的一个块来计算出哪个情人要去,然后找到正确的值之一。所以在最坏的情况下它将读取2个块
C)2个街区。一个找到数字1500,另一个找到所有元组> 1500
D)3个街区。 2找到最大值块,另一个找到最大值本身。
假设EMPLOYEE具有单级,密集的聚类索引 DOB。假设索引中的每个节点可以容纳200个索引记录。 (a)索引占用多少个磁盘块?
(b)以下内容 查询将读取最坏情况下的磁盘块数(确切地说 数字,例如,50)? 选择ID 来自员工 WHERE ID = 80;
(c)以下查询将读取多少个磁盘块?请注意,此查询会投影DOB。
SELECT DOB FROM 雇员在哪里DOB<> “1/1/2000’ ;
(d)将阅读以下查询 多少个磁盘块?
SELECT * FROM EMPLOYEE WHERE DOB ='1/1/2000'';
A)再次出现3个街区。一个根,一个有200个条目,一个有50个
B)由于在此示例中未对ID进行索引,因此必须查看整个表。但我不知道如何计算块。
C)3块?必须扫描整个表格。
D)2个较低级别的块来查找索引
很抱歉这篇长篇文章,只是试图添加所有细节。