我正在做一些锻炼,以找出性能方面的明智选择,无论是元素值查询还是路径范围查询。
我发现使用路径范围查询进行搜索要比元素值查询慢一点。
没有人对路径范围查询的搜索速度有任何想法,即使它加载了额外的路径范围索引。
我使用了下面的代码。
xdmp:document-delete("/aname4.xml") xdmp:document-insert("/aname1.xml", <name><fname>John</fname><mname>Rob</mname><lname>Goldings</lname></name>), xdmp:document-insert("/aname2.xml", <name><fname>Jim</fname><mname>Ken</mname><lname>Kurla</lname></name>), xdmp:document-insert("/aname3.xml", <name><fname>Ooi</fname><mname>Ben</mname><lname>Fu</lname></name>), xdmp:document-insert("/aname4.xml", <name><fname>James</fname><mname>Rick</mname><lname>Tod</lname></name>) create path range index "/name/fname" checked response time with following search code cts:search(doc(),cts:path-range-query("/name/fname","=","Jim"),"filtered") cts:search(doc(), cts:element-value-query(xs:QName("fname"),"jim"), "filtered")
使用路径范围查询时是否有应考虑的特定事项
任何建议都会受到赞赏,因为它有助于我们设计有效的搜索代码。
我正在做一些锻炼,以找出性能方面的明智选择,无论是元素值查询还是路径范围查询。我发现使用路径范围查询进行搜索要比元素慢一些...
在经过过滤的查询中,需要遍历每个候选匹配文档以检查是否匹配。要验证元素范围匹配,我们只需要查看元素的名称,然后查看其内容(如果名称匹配)。要验证路径范围匹配,我们需要确保当前元素的名称与路径的末尾匹配,然后(在这种情况下)确保其父元素名称匹配,然后该父元素位于根。这不是更多的工作,而是更多的工作。同样,建立索引需要做更多的工作才能知道要索引的元素内容。