Je trouve un élément associé à travers son identifiant, stocké dans un élément de référence de HREF, comme: lecture de la documentation de Regarddb, je suis à peu près sûr un simple J'ai même essayé p> et créé un index avec le champ ID comme SO P> 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.
<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>
3 Réponses :
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 exemple p> Utilisez FN: ID pour rechercher XML: Attributs ID P>
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,
Cependant, l'expression équivalente Certains utilisateurs ont signalé que les valeurs XML plus grandes: ID ont un impact négatif sur la performance. P>
blockQuote> Source P> P> ID () code> pour extraire les éléments.
id ("sect1") / tête code> fonctionne via une recherche d'index rapide. P>
// section [@xml: id = 'sect1'] / tête code> n'utilisera pas l'index ID. P>
Si vous voulez toujours rester avec Créer un index de plage avec: p> Cela devrait vous donner index de base Utilisation. p> Réécriture de votre requête pourrait améliorer encore les performances (entièrement optimisées): p> @ID code>:
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>