0
votes

Ma requête XPath ne parvient pas à utiliser l'index de la plage. Qu'est-ce que je fais mal?

Je trouve un élément associé à travers son identifiant, stocké dans un élément de référence de HREF, comme: xxx pré>

lecture de la documentation de Regarddb, je suis à peu près sûr un simple CODE> L'index aurait dû être suffisant et peut-être même être autogogenéré. Mais en regardant le profileur, ma requête n'utilise aucun index.

J'ai même essayé p> xxx pré>

et créé un index avec le champ ID comme SO P>

<root>
  <map id="ide931fee3-6a45-4435-a8d2-f018ae2ca2ea">
    <mapref href="f80cc8c8-6b6d-4005-b2e9-85eac2ee2fbf.1.36" />
  </map>
  <map id="f80cc8c8-6b6d-4005-b2e9-85eac2ee2fbf.1.36">
    <topicref href="47aed1dd-62f7-4fb6-ae76-dbfcde0a4bab.1.9" />
  </map>
  <question id="47aed1dd-62f7-4fb6-ae76-dbfcde0a4bab.1.9">
    ...
  </question>
</root>


0 commentaires

3 Réponses :


1
votes

Si vous le pouvez, je conseillerais de passer à l'attribut XML: ID. Ceci est indexé automatiquement par EXIST-DB. Vous pouvez ensuite supprimer la définition d'index et utiliser la fonction ID () pour extraire les éléments.

exemple xxx blockQuote>

Utilisez FN: ID pour rechercher XML: Attributs ID

Exist-dB indexe automatiquement tous les attributs XML: ID et autres attributs avec identifiant de type comme déclaré dans une DTD (si la validation est activée). Cet index automatique est utilisé par les fonctions d'identification standard et fournit un moyen rapide de rechercher un élément. Par exemple, id ("sect1") / tête fonctionne via une recherche d'index rapide.

Cependant, l'expression équivalente // section [@xml: id = 'sect1'] / tête n'utilisera pas l'index ID.

Certains utilisateurs ont signalé que les valeurs XML plus grandes: ID ont un impact négatif sur la performance.

Source


0 commentaires

0
votes

Si vous voulez toujours rester avec @ID :

Créer un index de plage avec: xxx

Cela devrait vous donner index de base Utilisation.

Réécriture de votre requête pourrait améliorer encore les performances (entièrement optimisées): xxx


0 commentaires

0
votes

Pour toute personne intéressée par la solution, j'ai finalement choisi. Les réponses énumérées malheureusement ne faisaient malheureusement pas vraiment la question plus rapide ou m'a donné une bonne idée de la réécrire.

Ainsi, j'ai fait cela: P>

<create qname="map" type="xs:string">
    <field name="map-id" match="@id" type="xs:string" />
</create>
<create qname="question" type="xs:string">
    <field name="question-id" match="@id" type="xs:string" />
</create>
<create qname="theory" type="xs:string">
    <field name="theory-id" match="@id" type="xs:string" />
</create>
<create qname="reading" type="xs:string">
    <field name="reading-id" match="@id" type="xs:string" />
</create>
<create qname="glossgroup" type="xs:string">
    <field name="glossgroup-id" match="@id" type="xs:string" />
</create>


0 commentaires