BaseX XQuery运行缓慢(再次!)

时间:2018-06-29 14:09:14

标签: basex

几年前,我们在使用XQuery时遇到了问题。看这里: BaseX: Slow XQuery 我们能够在社区的帮助下解决该问题(索引正常运行所需的字符串文字)。但是现在(突然)同样的查询又变慢了!

查询xquery /*:ARTICLE/*:ART[*:PRDNO='1104423']约需3-30秒(XML文件约为500MB),与xquery count(/*:ARTICLE/*:ART[*:PRDNO='1104423'])相同。

来自info database的结果令人怀疑,其中有一个文本索引。

我将“ QUERYPLAN”,“ XMLPLAN”和“ COMPPLAN”设置为true。

这为“计数”查询提供了以下内容:

Query plan:
<QueryPlan compiled="true">
  <FnCount name="count(items)">
    <IterPath>
      <Root/>
      <IterStep axis="child" test="*:ARTICLE"/>
      <IterStep axis="child" test="*:ART">
        <CmpG op="=">
          <CachedPath>
            <IterStep axis="child" test="*:PRDNO"/>
          </CachedPath>
          <Str value="1104423" type="xs:string"/>
        </CmpG>
      </IterStep>
    </IterPath>
  </FnCount>
</QueryPlan>

Query:
count(/*:ARTICLE/*:ART[*:PRDNO='1104423'])

Parsing: 0.21 ms
Compiling: 0.27 ms
Evaluating: 28453.24 ms
Printing: 0.15 ms
Total Time: 28453.87 ms

Hit(s): 1 Item
Updated: 0 Items
Printed: 1 b
Read Locking: hospindex
Write Locking: (none)

Query executed in 28453.87 ms.

类似地,这就是我在没有“ count”的情况下得到的查询结果:

Query plan:
<QueryPlan compiled="true">
  <IterPath>
    <Root/>
    <IterStep axis="child" test="*:ARTICLE"/>
    <IterStep axis="child" test="*:ART">
      <CmpG op="=">
        <CachedPath>
          <IterStep axis="child" test="*:PRDNO"/>
        </CachedPath>
        <Str value="1104423" type="xs:string"/>
      </CmpG>
    </IterStep>
  </IterPath>
</QueryPlan>

Query:
/*:ARTICLE/*:ART[*:PRDNO='1104423']

Parsing: 0.02 ms
Compiling: 0.01 ms
Evaluating: 0.49 ms
Printing: 20093.88 ms
Total Time: 20094.41 ms

Hit(s): 1 Item
Updated: 0 Items
Printed: 1583 b
Read Locking: hospindex
Write Locking: (none)

Query executed in 20094.41 ms.

有趣的是,“打印”时间非常长,但是打印结果只有几行。

我们已经重新创建和优化了数据库。

查询计划看起来就像是在使用索引,对吧?

有什么建议吗?非常感谢你!

0 个答案:

没有答案