2

假设我有 2k 个分区。IE 2k 不同的分区键。所有分区都有 3 个 guid 行键。

为了显示:

分区 1 - Guid 1(rowkey) - Guid 2(rowkey) - Guid 3(rowkey)

分区 2 - Guid 4(rowkey) - Guid 5(rowkey) - Guid 6(rowkey)

……等等等等。

如果我要查询所有分区的确切 guid。我会查看什么样的查询性能?直接检索或表扫描?

更多背景信息。我打算有以下架构:

UserEntity
分区键 - 用户 Guid
行键 - 用户名

OpenIdEntity
分区键 - 用户 Guid(与 UserEntity 相同)
行键 - OpenId

现在,当用户登录时,我需要 1)找到打开的 ID(在此处选择具有 1 个不同行键的记录,无论分区如何) 2)找到用户名。(选择具有 1 个不同分区键的记录。对属性或其他内容进行表扫描。由于分区键已知且分区很小,因此表扫描的影响应该是最小的)

如果 Azure 表存储扫描整个表以找到 1 个不同的行键,我担心第 1 步会很慢。

提前致谢。

4

1 回答 1

5

你的担心是有道理的。“所有具有 RowKey X 的实体”形式的查询将导致全表扫描。

如果您知道您正在使用的分区键集,则可以发出n 个并行查询(每个分区一个)。例如,“所有具有 PartitionKey 1 和 RowKey X 的实体”、“所有具有 PartitionKey 2 和 RowKey X 的实体”等。并行发出这些将意味着您正在进行n次直接查找,这通常比表扫描快得多.

于 2012-08-25T03:29:00.263 回答