我面临天蓝色表存储的问题。我的存储表中有几十万条数据需要查询。
第一种方法是检索所有数据,然后按要求查询,但耗时太长。
第二种方法是如果我直接使用查询从表存储中获取过滤数据
因此,根据我的理解,第二种方法是最好的,但我无法适当地查询。 如何从 Azure 表存储中检索最后一个条目,在此我也尝试按函数进行 MAX 和排序,但它对我不起作用。
未运行代码:
var query2 = new TableQuery().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, patientId.ToString()),
TableOperators.And,
TableQuery.GenerateFilterConditionForGuid("DeviceID", QueryComparisons.Equal, deviceId))
).OrderByDescending(x=>x.EventDate).Take(1).Select(x=>x.EventDate).ToList();
运行代码花费太多时间:
var query = new TableQuery<TherapyEvent>().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, patientId.ToString()),
TableOperators.And,
TableQuery.GenerateFilterConditionForGuid("DeviceID", QueryComparisons.Equal, deviceId)) );
var resp= _table.ExecuteQuery(query).OrderByDescending(x=>x.EventDate).Take(1).Select(x=>x.EventDate).ToList()
到目前为止,还没有直接的方法可以使用 RowKey 属性获取最新记录。但是,您可以移动 RowKey 并按时间倒序列出它,然后获取最新的最顶部条目。
您可以查看此博客了解更多详细信息:
http://blog.smarx.com/posts/using-numbers-as-keys-in-windows-azure
补充参考:
如何在Azure表存储中使用RowKey或Timestamp检索最新记录
注意:使用字符串日期时间作为行键并不是一个好方法,因为表存储根据行键按升序存储实体。