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