什么是更快:对分区键的远程查询或Azure表存储中PK的个别相等查询?

时间:2015-08-14 06:42:58

标签: azure azure-table-storage

我需要针对表存储运行查询。我需要从大约10个连续的分区键获取特定数据。更确切地说,我的Azure表包含PK / RK模式,因此每个PK都有大约300行。在每个PK中,我需要检索大约100行。

我可以这样打1个电话:

                var query = table.CreateQuery<Item>()
                    .Where(n => string.Compare(n.PartitionKey, fromPk, StringComparison.Ordinal) >= 0 &&
                                string.Compare(n.PartitionKey, toPk, StringComparison.Ordinal) <= 0 &&
                                string.Compare(n.RowKey, fromRk, StringComparison.Ordinal) >= 0 &&
                                string.Compare(n.RowKey, endRk, StringComparison.Ordinal) <= 0
                    ).AsTableQuery();

或 10个电话:

                var query = table.CreateQuery<Item>()
                    .Where(n => string.Compare(n.PartitionKey, pk, StringComparison.Ordinal) == 0 &&
                                string.Compare(n.RowKey, fromRk, StringComparison.Ordinal) >= 0 &&
                                string.Compare(n.RowKey, endRk, StringComparison.Ordinal) <= 0
                    ).AsTableQuery();

什么更好?

1 个答案:

答案 0 :(得分:0)

我自己没有对它进行过分析,我猜测在某些情况下差异可能非常小,但单一查询可能就是这样。

单个查询相当有效,但是由于您拥有的数据量(结果集中大约3000行)以及一次最多可获得1000行的事实,这将导致至少3个在引擎盖下调用API。

单个查询可能单独更快,您可能不会获得延续令牌,您可以并行运行它们。如果你不能并行运行查询,我会期望请求的延迟超过任何查询性能差异。