【发布时间】:2020-07-21 11:02:35
【问题描述】:
我们的日期存储为:"2/22/2008 12:00:00 AM"。我们需要过滤结果,以便在两次之间获取文档。
如果我们比较两个查询,一个使用 UDF,另一个不使用,使用 UDF 的查询要慢几个数量级。
与:
SELECT DISTINCT
c.eh, c.wcm, w AS wt
FROM
c
JOIN w IN c.wt
WHERE
(udf.toValue(w.ced) BETWEEN udf.toValue('03/02/2023') AND udf.toValue('09/02/2023'))
AND w.ty = 'FW'
OFFSET 0
LIMIT 10
没有:
SELECT DISTINCT
c.eh, c.wcm, w AS wt
FROM
c
JOIN w IN c.wt
WHERE
w.ty = 'FW'
OFFSET 0
LIMIT 10
这是 UDF:
function userDefinedFunction(datestr){
return new Date(datestr).getTime();
}
根据the second answer here(一位在 Cosmos 工作的 MS 员工)我应该可以直接比较:
(w.ced BETWEEN '03/02/2023' AND '09/02/2023')
但这会返回 0 个结果。我对 Cosmos 非常陌生。如何优化此查询?我应该补充一下,wt/ced 上已经有一个 idex。
【问题讨论】:
标签: azure-cosmosdb user-defined-functions