在Silbershatz Database System Concepts 6th Ed.中,在第12章,参见。 12.3.1,p。 542,解释了一种处理查询的算法,该算法是通过使用主索引对关系的非密钥属性施加等式约束来进行选择。
段落声称从文件中读取将是连续的,因为文件是按搜索键排序的。
我不明白 - 为什么读取会连续?
正如我所看到的,记录按主索引的聚类键排序,选择使用非键属性,因此这些属性可能包含在关系的每个记录中。我看到检索所有记录的唯一方法是对所有关系进行线性扫描。
答案 0 :(得分:3)
在这种情况下,primary index, equality on non-key
意味着我们在某个属性上拥有一个主索引,即A
(即,记录是根据A
在磁盘上进行物理排序的)。在这里,non-key
表示可能存在多个具有相同值的属性A
记录,换句话说,A
不能保证是唯一的。但是,选择实际上是在主索引的聚簇键A
上使用相等性。
因此,算法变为:使用索引获取满足相应相等条件的第一条记录,然后使用线性扫描直到条件打破。
简而言之,这里non-key
仅表示索引字段不是唯一。
您可以进一步参考these幻灯片中的幻灯片13。并查看名称的用语。
附带说明:请注意这张幻灯片上写的成本与书中写的成本之间的差额,而后者错过了一个ts
,但它确实不应该错过它,因为它明确存在于A2的成本中,并在第543页的图12.3的说明中明确指出。这可能是本书中的错字。其实并不重要,我只想指出这一点。