我想创建一个始终由唯一键访问的大表(大约 450 亿行)。
在 DB 之外,保存它的最佳结构是 Dictionary 或 HashSet,但当然由于数据的大小,不可能在数据库之外执行此操作。
SQL Server 是否提供针对键值访问优化的结构?我知道聚集键非常快,但它仍然是一个索引,因此会有一些与遍历索引页相关的额外磁盘读取。我想从 SQL Server 获得的是一种“本机”结构,它将数据存储为键值对,然后可以根据键访问值。
换句话说,我的问题是如何在 SQL Server 中存储 450 亿行并在没有索引的情况下有效地访问它们,集群或非集群,因为读取索引非叶页可能会导致大量 IO,并且由于每个值都可以通过唯一键访问,应该有一个结构,其中键的哈希解析为值的物理位置。要获得 1 个值,我们需要进行 1 次读取(除非存在哈希冲突)。
(Oracle 中的等价物是 Hash Cluster)
谢谢你的帮助。