Azure производительность запросов к таблицам с ключом раздела, ключом строки и неиндексированным - PullRequest
0 голосов
/ 14 января 2020

У меня есть запрос таблицы ниже этого поиска по PK, RK и неиндексному ключу.

Замедлит ли поиск в базе данных? Будет ли поиск по DOB быстрее, если он выполняется на веб-слое через c#?

        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));

1 Ответ

1 голос
/ 14 января 2020

Учитывая, что для комбинации PartitionKey / RowKey может существовать один объект, я считаю, что третий критерий фильтра вашего запроса является избыточным (при условии, что вы намеревались включить в него другой атрибут вместо RowKey).

Что касается По мере того, как скорость запроса возрастает, опять же, учитывая, что вы ищете объект с соответствующими PartitionKey и RowKey, этот запрос будет самым быстрым. Если вы удалите RowKey из запроса и выполните поиск по PartitionKey и любому другому неиндексированному атрибуту, он будет работать медленнее, поскольку запрос будет выполнять сканирование раздела для поиска подходящей сущности.

Эта статья может оказаться полезной : https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-design-guide.

...