Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure cosmosdb 用于日期时间的Azure Cosmos DB UDF严重减慢了查询速度_Azure Cosmosdb_User Defined Functions - Fatal编程技术网

Azure cosmosdb 用于日期时间的Azure Cosmos DB UDF严重减慢了查询速度

Azure cosmosdb 用于日期时间的Azure Cosmos DB UDF严重减慢了查询速度,azure-cosmosdb,user-defined-functions,Azure Cosmosdb,User Defined Functions,我们的日期存储为:“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 w.ty = 'FW' OFFSET 0 LIMIT 10 以下是UDF: function userDefin

我们的日期存储为:
“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 
    w.ty = 'FW' 
OFFSET 0 
LIMIT 10
以下是UDF:

function userDefinedFunction(datestr){
    return new Date(datestr).getTime();
}
根据(一位在Cosmos工作的微软员工)的说法,我应该可以做一个直接比较:

(w.ced BETWEEN '03/02/2023' AND '09/02/2023')

但这将返回0个结果。我对宇宙非常陌生。如何优化此查询?我应该补充一点,在
wt/ced

上已经有了idex。一般来说,如果您可以使用系统函数而不是UDF,性能会更好

然而,在这个场景中,您应该以一致的格式保存日期,以避免每次都必须使用UDF来修复它们

我建议你看看我们的网站

如果您能够在Cosmos DB中以一致的格式存储日期(推荐的格式遵循ISO 8601 UTC标准),那么您可以避免在查询本身中转换格式(这将非常昂贵)。如果需要,任何数据格式转换都应该在应用程序中完成。例如,在运行查询之前,将日期“03/02/2023”转换为ISO 8601 UTC标准(然后在查询中使用此文本)


希望这对您有所帮助。

一般来说,如果您可以使用系统函数而不是UDF,性能会更好

然而,在这个场景中,您应该以一致的格式保存日期,以避免每次都必须使用UDF来修复它们

我建议你看看我们的网站

如果您能够在Cosmos DB中以一致的格式存储日期(推荐的格式遵循ISO 8601 UTC标准),那么您可以避免在查询本身中转换格式(这将非常昂贵)。如果需要,任何数据格式转换都应该在应用程序中完成。例如,在运行查询之前,将日期“03/02/2023”转换为ISO 8601 UTC标准(然后在查询中使用此文本)


希望这有帮助。

谢谢马克。我们得出了相同的结论。无法使用当前日期格式修复查询。我们需要修正数据。谢谢马克。我们得出了相同的结论。无法使用当前日期格式修复查询。我们需要修正数据。
(w.ced BETWEEN '03/02/2023' AND '09/02/2023')