Dear Andre,

Thanks for your observations, which bear some similarity to what
another user reported in Github [1]. I’ll get back to you soon.

Best,
Christian

[1] https://github.com/BaseXdb/basex/issues/1553



On Fri, Mar 30, 2018 at 10:32 AM, andre weber <a...@gmx.de> wrote:
> Hi,
>
> with the new Version 9 I have encountered a strange performance issue:
> - Running a simple xpath-query is fast, as it is using the attribute-index. 
> Execution time: 59.19 ms
> - Putting the same simple xpath-query into a function results in a very poor 
> performance. No use of the attribute-index here. Execution time: 12578.55 ms
>
> There where no issues with that in the previous Versions 8.x
>
> Here’s the setup…
>
>    xquery version "3.1";
>
>    declare function local:slow_query_here() as node()*
>    {
>        prof:time(
>          db:open("mars","data“)/sec[ @isin = "FR0000125338" ]
>        )
>    (: 12578.55 ms :)
>    };
>
>    let $fast_query_here :=
>        prof:time(
>          db:open("mars","data“)/sec[ @isin = "FR0000125338" ]
>        )
>    (: 59.19 ms :)
>
>    return local:slow_query_here()
>
>
> Here’s the query plan…
> <QueryPlan compiled="true" updating="false">
>  <GFLWOR type="element()*">
>    <Let type="element()*">
>      <Var name="$fast_query_here" id="0" type="element()*"/>
>      <ProfTime name="time(value[,label])" type="element()*">
>        <CachedPath type="element()*">
>          <ValueAccess index="attribute" type="attribute()*">
>            <IndexStaticDb name="mars" database="mars"/>
>            <Str type="xs:string">FR0000125338</Str>
>          </ValueAccess>
>          <IterStep axis="self" test="*:base_isin" type="attribute()*"/>
>          <CachedStep axis="parent" test="*:option" type="element()*">
>            <CachedPath>
>              <IterStep axis="parent" test="*:option_list" type="element()*"/>
>              <IterStep axis="parent" test="*:finance" type="element()*"/>
>              <IterStep axis="parent" test="document-node()" 
> type="document-node()*"/>
>            </CachedPath>
>          </CachedStep>
>        </CachedPath>
>      </ProfTime>
>    </Let>
>    <ProfTime name="time(value[,label])" type="element()*">
>      <CachedPath type="element()*" database="mars">
>        <DBNode database="mars" pre="0" type="document-node()"/>
>        <IterStep axis="descendant" test="*:option_list" type="element()*"/>
>        <IterStep axis="child" test="*:option" type="element()*">
>          <CmpSimpleG op="=" type="xs:boolean" size="1">
>            <CachedPath type="attribute()?">
>              <IterStep axis="attribute" test="*:base_isin" 
> type="attribute()?"/>
>            </CachedPath>
>            <Str type="xs:string">FR0000125338</Str>
>          </CmpSimpleG>
>        </IterStep>
>      </CachedPath>
>    </ProfTime>
>  </GFLWOR>
> </QueryPlan>
>
> Any idea what’s causing the performance drop?
>
> Thank you for your thoughts!
> Andre

Reply via email to