XPath/XQuery查询计划的XML表示与启发式优化
将XQuery抽象语法树导出为XML,并在XML层面应用代数优化规则,如谓词下推和连接重排。 · 难度:入门 · +10XP
查询计划的XML模型
标准XQuery处理器内部使用树状计划,但可通过自定义xmlns:plan命名空间将其序列化为XML。例如<plan:for-var>表示for $x in ...,<plan:where>包含过滤条件。本教程实现一个优化器:用XSLT对计划XML进行等价变换,如将<plan:filter>下推到<plan:join>之前,或合并<plan:let>表达式。重点:保留plan:cardinality估算属性以辅助代价模型,并注意XPath步进(child::*)与轴反转时的转换正确性。
<plan:query>
<plan:for-var name="x" in="//book">
<plan:where>
<plan:compare op="gt" left="$x/price" right="100"/>
</plan:where>
<plan:return>$x/title</plan:return>
</plan:for-var>
</plan:query>