我有一个很大的 xml 数据库(30 000 个文件,1.3 Go)。此数据库中的一个文件列出了数据库中存在的所有其他文件。我的目标是“简单地”检查列出的所有文件是否都存在于数据库中。但我必须不关心文件的名称,而只关心文档中的 XML 代码。
这是这样的:
declare variable $root := fn:collection();
declare function local:isValid($fileCode) {
let $fileSearchedIdentCode := $root/dmodule/identity/dmCode
return
$fileCode/@attribute1 = $fileSearchedIdentCode/@attribute1 and
$fileCode/@attribute2 = $fileSearchedIdentCode/@attribute2 and
$fileCode/@attribute3 = $fileSearchedIdentCode/@attribute3
};
<result>
{
for $fileCode in $root/file[identity/@fileType eq 'listOfFiles']/fileContent/fileEntry/fileCode
return
if (local:isValid($fileCode))
then <filePresent>1</filePresent>
else <fileNonPresent>2</fileNonPresent>
}
</result>
上面的代码是为一个小型数据库运行的,但对我来说,它需要大量的时间。
所以,我想知道是否有人可以帮助我改进该代码以便在合理的时间内执行它;)
(我的数据库被索引)
谢谢你的帮助 !!
约翰