看起来像那样。
&LT;记录&GT; &LT; HSN&GT; 0005&LT; / HSN&GT; &LT; TSN </跨度> &GT; 486&LT; / TSN </跨度> &GT; &lt; factorycode&gt; BMW 3/1&lt; / factorycode&gt; &LT;描述&GT; 318I&LT; /描述&GT; &lt;电力&GT; 83&LT; /功率&GT; &lt;立方体容量&gt; 1796&lt; /立方体容量&gt; &LT; typeapprovaldate&GT; 19910701&LT; / typeapprovaldate&GT; &LT; XXX→1&LT; / XXX&GT; &LT;中&GT; BMW00737&LT; /中间&GT;&LT; /记录&GT;
我有一个简单的Query语句,用同样的hsn查找每个mid TSN </跨度>
以中等价格购买
首先,你说“长”是什么意思,你保留多少条记录?太长可能意味着多秒或几分钟,或者它可能意味着50毫秒,因为它对于您的用例来说太长了。提问时请更具体。
接下来,您肯定不会使用属性索引,因为您的xml中没有任何属性。你想用 的 文字索引 强> 。通常,优化器应该重写您的查询以在这种情况下使用文本索引,但您可以确保查看BaseX GUI中的“查询信息”视图。在编译步骤和生成的优化查询中,您应该看到使用索引的条目。如果您没有看到任何内容,则不使用索引,因为由于某种原因,优化程序决定不会或者您的索引不是最新的。你可以用 DB:文本 直。
但是,让我给你两个不相关的提示:首先,如果性能是你永远不会使用的问题 // 。它是一个后代或自我的步骤,这意味着BaseX必须查看所有后代元素。相反,使用特定的路径,即 doc('database')/records/record 。
//
doc('database')/records/record
另外,不要写 $mid / hsn 。虽然它可能是有效的,但在路径运算符之间放置空格是非常不寻常的。而只是删除空格并写 $mid/hsn 。
$mid / hsn
$mid/hsn