问题描述

Azure Storage Account 下的 Table 查询的性能调优?

 

问题解答

因为Azure Storage Table服务(表服务) 与常规的关系型数据库不一样(例如:MySQL, SQL Server等),他里面存储的实体(Entity,表示一条数据)不能通过添加索引来优化性能。只能使用它默认索引组合(Partition Key 和 Row Key)进行优化查询。

基于这中原因,如果在最初时,没有使用Partition Key 和 Row Key 对数据进行分区,而从单一个字段查询,则是非常耗时,效率十分低下。因为查询操作会依次搜索构成表的所有分区,查找所有匹配的实体。 无论筛选器是否使用 RowKey它都将执行表扫描。 例如:$filter=LastName eq 'Jones'”。

关于表查询的优化设计见:https://learn.microsoft.com/zh-cn/azure/storage/tables/table-storage-design-for-query#optimizing-queries-for-the-table-service