在 Cosmos db 查询上使用多个Where函数的性能影响

问题描述 投票:0回答:1

如果我有来自 Cosmos DB 容器的可查询。如果我用这两种不同的方式编写代码会对性能产生什么影响?

  1. query.Where(x=>x.a=1 && x.b=2);
  2. query.Where(x=>x.a=1).Where(x=>x.b=2);

我尝试使用

query.Expression.ToString()
获取查询表达式,但输出仍然非常像 C# 代码,而不是类似 sql。所以,我不知道它会在服务器端执行什么样的查询。

这两个查询会生成相同/相似的服务器端查询吗?

有没有办法像本文档中那样获取生成的sql查询?

谢谢

azure-cosmosdb azure-cosmosdb-sqlapi
1个回答
0
投票

您可以尝试将

Func<>
的委托 (
IQueryable<>
) 解析为
string
以获得所需的结果。

Cosmos DB 的 LINQ 提供程序将在服务器端将条件合并到单个

WHERE
子句中,无论您使用的是一个
.Where()
还是多个链式调用。

您的两个示例都会生成相同的查询:

SELECT * FROM c WHERE c.a = 1 AND c.b = 2

Cosmos DB LINQ 提供程序在优化查询翻译方面足够好,因此您可以安全地操作这两个选项。

© www.soinside.com 2019 - 2024. All rights reserved.