我在查询 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();\nRun Code Online (Sandbox Code Playgroud)\n\n相对而言,较慢的代码:
\n\n return documentClient.CreateDocumentQuery<ConsumerDetails>(\n …Run Code Online (Sandbox Code Playgroud)