У меня есть таблица 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
)
будет ли это хорошо воспринято индексом?Или это приведет к полному сканированию таблицы?У кого-нибудь есть идея получше?Я знаю, что на каждом элементе таблицы есть временная метка, но она не индексируется, поэтому она будет слишком медленной для моей цели.