у меня есть лазурная таблица, где клиенты публикуют сообщения, могут быть миллионы сообщений в одной таблице. Я хочу найти Самый быстрый способ получения сообщений, размещенных в течение последних 10 минут (то, как часто я обновляю веб-страницу). Поскольку только ключ разбиения, я играл с идеей использования даты и времени, которое сообщение было размещено как Клавиша разбиения, например, строка как формат даты ISO8601, как «2009-06-15T13: 45: 30.0900000»
Пример PSEudo Code:
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
)
Но это будет сделано хорошо по индексу? Или это приведет к полному сканированию таблицы? У кого-нибудь есть лучшая идея сделать это? Я знаю, что есть временная метка на каждом элементе таблицы, но это не проиндексирован, так что это будет слишком медленно для моей цели.