gpt4 book ai didi

xquery - 在什么时候加载变量?

转载 作者:行者123 更新时间:2023-12-01 00:14:23 26 4
gpt4 key购买 nike

我们正在重构一个非常大的系统并查看我们编写的许多 xQuery,并想知道使用和包含一个声明许多全局变量的 xQuery 是否无济于事。

但问题是建筑师们......这些是在引用上加载还是仅在使用时加载?

意思可以说我有一些 xQuery ... _global.xq 像这样:

module namespace g="global/variables";
declare variable $g:col.build := '/db/foo/data/Build';
declare variable $g:doc.langmap := doc(concat($g:col.build,'/','langmap.xml'));
declare variable $g:doc.easymap := doc(concat($g:col.build,'/','easymap.xml'));
declare variable $g:doc.foomap := doc(concat($g:col.build,'/','foomap.xml'));

然后我在我的 xQuery 中引用它:
import module namespace g='global/variables' at '_global.xq';

然后我只使用 $g:doc.langmap在我的 xQuery 中。另外两个( $g:doc.easymap$g:doc.foomap )是否也在内存中进行评估和加载,即使我不使用它们?

$g:doc.langmap填充在 import还是仅当我在查询中实际使用它时?就像我编写一个从未引用 $g:doc.langmap 的 xQuery 一样但是导入该模块,它是否仍然在内存中创建并填充?

我想知道,因为我是否在 _global.xq 中有许多其他声明变量可用于许多其他 xQueries。当然,我不使用每个引用文献中的一些引用资料。那么问题就很简单了…… import module命令导致它们在导入时全部被评估,或者它们只有在使用时才具有值?

我怀疑这将是一个非常简短的答案。

最佳答案

好的,我相信我已经通过一些简单的测试知道了这个问题的答案。

我在运行大约需要 87 秒时创建了一个 Xquery。

xquery version "3.0";
declare variable $test := collection('/db/foo/data')//*[@docnum='GS01'];
let $foo := 'bar'
return
$test

如果我将其更改为:
xquery version "3.0";
declare variable $test := collection('/db/foo/data')//*[@docnum='GS01'];
let $foo := 'bar'
return
$foo

它的运行时间只有几分之一秒。这使我相信 $test 实际上并没有填充数据,除非使用它来回答我的问题。如果我错了,请插话。

关于xquery - 在什么时候加载变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54472658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com