From: Jean-Marc V. <jm...@fr...> - 2005-05-13 10:54:33
|
Wolfgang Meier wrote: >> Where and how is the indexation information exploited ? > > > The query engine is designed to handle every possible type of query, > so the decision if an index can be used or not is based on a number of > factors. To begin with, each entry in the range index (values.dbx) has > the following structure: > > Key: [collectionId, indexType, keyData] -> Value: (docId_0, > elementId_0, ... elementId_n, docId_1, ...) > > So the index stores the element ids of all elements containing a given > keyData of type indexType. It does not store the path to the element > nor its name. > The occurrences of element "key" are stored in elements.dbx. Along > with each occurrence, we also store a bit flag that indicates if the > element has an index of a given type or not. The flag is set when > adding the element to the range index. > The decision if an index can be used or not is made in > GeneralComparison, method quickNodeSetCompare. The method first > evaluates its left operand, which results in the node set > corresponding to all "key" nodes. This is probably where the CPU time is lost! Can't we exploit the fact that this structural element <my-key> is indexed to retrieve the list of possible elements, that is allready there in values.dbx . Without having to evaluate in the normal eXist way the left operand. This could be done for simple constraints like [ my-key = 123 ] . There is no difficulty to store the index path along with the structure mentioned before. For simplicity the indexed element could be recognized in the query just by element name. What do you think ? Thanks for the information on the design and algo. -- Jean-Marc Vanel Conseil et Services / développement & intégration logiciels Logiciel libre, Web, Java, XML ... A la pointe de la technique, au service des projets http://jmvanel.free.fr/ ===) CV, software resources Mes journaux: - sujets généraux en Français: http://jmvanel.free.fr/Block-note.html - sujets informatiques en Français: http://jmvanel.free.fr/notes-informatiques.html - computer science diary : http://jmvanel.free.fr/computer-notes.html Worldwide Botanical Knowledge Base http://wwbota.free.fr/ test XML query engine: http://jmvanel.free.fr/protea.html |