Azure 存储上的查询执行速度非常慢

Query execution on azure storage is very slow

我正在尝试查询天蓝色 table 存储上的时间戳列。我有一个 where 条件,用于检查输入值是否大于时间戳值。 azure 时间戳列不是分区键或行键。我开始知道查询不是分区或行键的列会降低查询执行的性能。当记录越来越多时,我的应用程序很慢。我尝试将时间戳数据移动到分区键数据,但分区键不接受时间戳值,如“4/13/2016 5:20:03 AM +00:00”。提高查询性能的最佳选择是什么。

正如您已经提到的,如果查询不包含 PartitionKey and/or RowKey 查询将会很慢,因为 Table 服务正在运行 table扫描。建议将 date/time 值用作 PartitionKey 值。

I tried to move time stamps data to partition key data but partition key is not accepting time stamp value like "4/13/2016 5:20:03 AM +00:00"

这是因为该值包含不允许的字符(https://msdn.microsoft.com/en-us/library/azure/dd179338.aspx --> 请参阅 Characters Disallowed in Key Fields 部分)。

实际上,您可以采取多种措施来解决此问题:

  • 您可以将 date/time 值设置为 YYYY-MM-DDThh:mm:ss 格式。
  • 您可以将 date/time 值转换为刻度并在前面添加一些零并将其保存为 PartitionKey。类似于:

    分区键值 = YourDateTimeValue.Ticks.ToString("d19");

如果您希望最新的条目出现在顶部,您可以这样做:

PartitionKey Value = (DateTime.MaxValue.Ticks - YourDateTimeValue.Ticks).ToString("d19");

您可能还会发现这个有用:https://azure.microsoft.com/en-in/documentation/articles/storage-table-design-guide/