Запрос таблицы Azure только с RowKey
У меня есть таблица с ~10000 PartitionKey (PK), и каждый PK имеет ~500000 RowKey (RK) как "yyyyMMddHHmmss"
короткая
Когда я пытаюсь получить записи с RK "yyyyMMdd" без PK, для получения результатов требуется целая вечность (буквально).
долго
Мои запросы в основном PK + RK, к сожалению, некоторые запросы должны быть получены только RK. Я понимаю, что получение данных без ПК не лучший подход, но я должен. И похоже, что это вообще не вариант в реальной жизни.
Единственный способ, которым я могу придумать, - это сохранить другую таблицу для сохранения PK, основанную на RK, которую я действительно не хочу хранить в справочной таблице, если это не единственный способ справиться с этим)
код
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 ответ
Как вы правильно заметили, для такого объема данных поиск без ПК невозможен.
Если требуется поиск только по дате, как бы болезненно это ни звучало, я бы сказал, что дизайн схемы вашей таблицы некорректен и требует доработки. Если вы хотите объяснить все сценарии использования данных в таблице, возможно, здесь люди могут помочь с правильным дизайном таблицы?