我不太了解数据库的幕后工作。但这是我相信它的确如此。使用主键检索记录时。数据库遍历所有记录以找到具有该密钥的记录。然后检索数据。
但是,在我的场景中,记录可以包含许多对其他记录的引用。因此,每次我想访问这些引用的记录时,我必须首先检索主键列表,然后使用键来检索引用的记录。数据库执行此操作的方式是多次遍历记录,只查找具有这些密钥的记录,从而降低性能,这在我的情况下不会受到影响。
我想要的是一个数据库,它使主键(或任何其他)引用磁盘上的物理位置。这样一旦我读取了引用对象的键列表,我就可以直接检索这些对象,而无需查看整个数据库。
“主键”不一定需要任何“含义” - 就像大多数编程语言中使用的指针一样。
我试图用二进制文件写我的数据。但是在调整大小和缓存方面它会使事情变得复杂,我怀疑它会比现有数据库更有效。
答案 0 :(得分:0)
您的基本假设是错误的:
使用主键检索记录时。数据库遍历所有记录以找到具有该密钥的记录。然后检索数据。
数据库管理系统使用indexes以非常有效的方式通过主键查找记录。它们的效率可以通过单次访问或(平均)访问每个记录。因此它们的效率与直接物理指针的效率相当,但它提供了超过物理指针的两大优势:
他们可以独立于物理位置访问记录,这样就可以移动记录以有效管理内存的使用。
它们允许通过一系列定义它们的属性值来搜索记录。