我有一个50,000,000文档数据库,我想写一个文件,每个文件的base-uri.运行整个50,000,000的时间太长(查询超时).所以,我认为我会使用谓词将数据库分解为更易于管理的批次.所以,我尝试了以下方法来处理它的性能:
for $i in ( 49999000 to 50000000 )
return fn:base-uri( /mainDoc[position()=$i] )
Run Code Online (Sandbox Code Playgroud)
但是,这1000个基础uris的表现非常缓慢.实际上,查询超时了.我尝试了类似的查询并获得了类似的结果(或缺少结果):
for $i in ( /mainDoc ) [ 49999000 to 50000000 ]
return fn:base-uri( $i )
Run Code Online (Sandbox Code Playgroud)
是否有更高性能的循环数据库方法,数据库末尾的文档与数据库开头的文档一样快速获取?
如果您只想要文档URI,那很容易.确保您已启用文档词典并运行cts:uris()
呼叫.
要按照您的方法在文档列表中向前跳转以对每个文档执行某些操作,您可以将未经过滤的工作快速完成:
for $item in cts:search(/mainDoc, cts:and-query(()), "unfiltered")[49999000 to 5000000]
return base-uri($item)
Run Code Online (Sandbox Code Playgroud)
这cts:and-query(())
是传递始终为真的查询的快捷方式.
归档时间: |
|
查看次数: |
155 次 |
最近记录: |