У меня есть таблица Azure, где клиенты отправляют сообщения, в одной таблице могут быть миллионы сообщений. Я хочу найти самый быстрый способ получить сообщения, опубликованные за последние 10 минут (как часто я обновляю веб-страницу). Поскольку индексируется только ключ раздела, я играл с идеей использования даты и времени, когда сообщение было опубликовано как ключ раздела, например строка как формат даты ISO8601, такой как "2009-06-15T13: 45: 30.0900000",
Пример псевдокода:
var message = "Hello word!";
var messagePartitionKey = DateTime.Now.ToString("o");
var messageEntity = new MessageEntity(messagePartitionKey, message);
dataSource.Insert(messageEntity);
а затем запросить сообщения, опубликованные за последние 10 минут, как это (непроверенный псевдо-код снова):
// Get the date and time 10 minutes ago
var tenMinutesAgo = DateTime.Now.Subtract(new TimeSpan(0, 10, 0)).ToString("o");
// Query for the latest messages
var latestMessages = (from t in
context.Messages
where t.PartitionKey.CompareTo(tenMinutesAgo) <= 0
select t
)
Но будет ли это хорошо отражено в индексе? Или это вызовет полное сканирование таблицы? У кого-нибудь есть лучшее представление об этом? Я знаю, что есть метка времени для каждого элемента таблицы, но она не индексируется, поэтому она будет слишком медленной для моей цели.