在 Silbershatz数据库系统概念第 6 版。,在第 12 章中。12.3.1,第。542,有一个用于处理查询的算法的解释,该查询通过对关系的非键属性施加等式约束,使用主索引进行选择。
该段落声称从文件中读取将是连续的,因为文件是按搜索键排序的。
我不明白 - 为什么读取是连续的?
在我看来,记录是按主索引的聚簇键排序的,选择是使用非键属性,所以这些属性可能包含在关系的每条记录中。我看到检索所有记录的唯一方法是对所有关系进行线性扫描。
小智 5
在这种情况下,primary index, equality on non-key
意味着我们在某个属性上有一个主索引,即A
(即记录在磁盘上基于 物理排序A
)。这里,non-key
意味着可能存在多个具有相同属性值的记录,A
换句话说,A
不保证是唯一的。然而,选择确实A
是在主索引的聚集键上使用相等性。
这样,算法就变成了:使用索引获取满足对应等式条件的第一条记录,然后使用线性扫描,直到条件中断。
简而言之,这里non-key
只表示索引字段不是唯一的。
您可以进一步参考这些幻灯片中的幻灯片 13 。看看这个名字是如何表达的。
作为旁注:注意这张幻灯片上写的成本和书中写的成本之间的差异,它错过了一个ts
,但它真的不应该错过,因为它明确存在于 A2 的成本中,并在解释,在图 12.3,在第 543 页。这可能是书中的一个错字。这其实并不重要,我只是想指出来。