小编Lud*_*212的帖子

CosmosDB:查询 CosmosDB 时的 Linq 与 SqlQuerySpec 性能

我在查询 CosmosDB 特定文档时定期执行 LINQ 谓词。然而,今天我的 CosmosDB 中填满了 10 万多个文档。表演非常缓慢。由于 Azure 门户中的 SQL 查询明显更快,因此我尝试使用 SqlQuerySpec。瞧\xc3\xa1!它的工作速度快得多。

\n\n

谁能告诉我在 CosmosDB 中使用 Linq 谓词时到底发生了什么以及为什么它会减慢我的查询速度?

\n\n

下面的代码在我的获取文档的方法中使用。\n注意:在本例中,id 是分区键。

\n\n
        var collectionUri = UriFactory.CreateDocumentCollectionUri(CDBdatabase, CDBcollection);\n\n        var sqlStatement = new SqlQuerySpec\n        {\n            QueryText = "SELECT * FROM c where c.id = @id",\n            Parameters = new SqlParameterCollection()\n                {\n                          new SqlParameter("@id", consumerId),\n                },\n        };\n\n        IDocumentQuery<T> query = documentClient.CreateDocumentQuery<T>(\n            collectionUri,\n            sqlStatement,\n            .AsDocumentQuery();\n\n        List<ConsumerDetails> results = new List<ConsumerDetails>();\n        while (query.HasMoreResults)\n        {\n            results.AddRange(await query.ExecuteNextAsync<ConsumerDetails>());\n        }\n\n        return results.FirstOrDefault();\n
Run Code Online (Sandbox Code Playgroud)\n\n

相对而言,较慢的代码:

\n\n
        return documentClient.CreateDocumentQuery<ConsumerDetails>(\n …
Run Code Online (Sandbox Code Playgroud)

c# linq azure azure-cosmosdb

6
推荐指数
1
解决办法
1977
查看次数

标签 统计

azure ×1

azure-cosmosdb ×1

c# ×1

linq ×1