仅使用RowKey的Azure表查询

时间:2013-06-05 02:16:37

标签: azure azure-table-storage

我有一张 ~10,000 PartitionKey (PK)的表,每个PK的 ~500,000 RowKey (RK)为“yyyyMMddHHmmss”

当我尝试使用没有PK的“yyyyMMdd”格式化RK检索记录时,需要永远(字面意思)才能获得结果。

我的查询主要是PK + RK,但遗憾的是,某些查询必须仅由RK检索。 我知道没有PK检索数据不是最好的方法,但我必须这样做。 在现实生活中,它看起来根本不是一种选择。

我能想到的唯一方法是保留另一个表来保存基于RK的PK,我真的不想保留引用表,除非它绝对是处理这个的唯一方法。

CloudStorageAccount account = CloudStorageAccount.DevelopmentStorageAccount;
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("test");
table.CreateIfNotExists();
var query = new TableQuery<TestEntity>().Where("(RowKey ge '20050103') and (RowKey lt '20050104')");
var result = table.ExecuteQuery(query);

Debug.WriteLine(result.Count());

1 个答案:

答案 0 :(得分:0)

正如您已经正确指出的那样,对于这样的数据量,没有PK的检索是不可行的。

如果需要按日期检索,听起来很痛苦,我会说你的表架构的设计存在缺陷,需要重新设计。如果您希望解释表中数据的所有使用场景,那么这里的人可以帮助正确设计表格吗?