Azure table 使用分区键、行键和非索引的查询性能

Azure table query performance with partition key, rowkey and non-index

我在通过 PK、RK 和非索引键搜索的下方有一个 table 查询。

这会减慢数据库搜索速度吗? DOB的搜索如果通过c#在web层执行会不会更快?

        var name = "John";
        var wins = 20;
        var dob = DateTimeOffset.Parse("1999-1-1");
        string usernameFilter2 =
            TableQuery.CombineFilters(
                    TableQuery.CombineFilters(
                        TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, name),
                        TableOperators.And,
                        TableQuery.GenerateFilterConditionForInt("RowKey", QueryComparisons.Equal, wins)), 
                TableOperators.And,
                TableQuery.GenerateFilterConditionForDate("DateOfBirth", QueryComparisons.GreaterThanOrEqual, dob));

考虑到 PartitionKey/RowKey 组合可能只有一个实体,我认为您的查询的第三个过滤条件是多余的(假设您打算在那里包含另一个属性而不是 RowKey)。

就查询速度而言,再次考虑到您正在搜索具有匹配的 PartitionKey 和 RowKey 的实体,此查询将是最快的。如果您从查询中删除 RowKey 并搜索 PartitionKey 和任何其他非索引属性,它将变慢,因为查询将执行分区扫描以查找匹配的实体。

您可能会发现这篇文章有帮助:https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-design-guide