0

~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());
4

1 に答える 1

0

ご指摘のとおり、このような量のデータの場合、PK なしで取得することはできません。

日付のみによる検索が必要な場合は、非常に面倒ですが、テーブル スキーマの設計に欠陥があり、再設計する必要があると言えます。テーブル内のデータの使用シナリオをすべて説明したい場合は、ここにいる人々がテーブルの適切な設計を手伝ってくれるでしょうか?

于 2013-06-05T03:26:21.823 に答える