Dear Nuria,
Am 18.02.2013 16:39, schrieb Nuria Garcia:
Thanks for your quick answer.
sorry for taking so long this time...
One more question, in a similar query but with attributes, it looks like the index doesn´t get applied (more similar to our real situation):
Compiling:
- rewriting where clause to predicate(s)
- pre-evaluating db:open("bbdd_1")
- simplifying descendant-or-self step(s)
- converting descendant::*:businessEvent to child steps
- pre-evaluating db:open("bbdd_2")
- simplifying descendant-or-self step(s)
- simplifying descendant-or-self step(s)
- swapping operands: descendant::*:inputs/.../fn:data(@*:element) = $col1/descendant::inputs/.../fn:data(@element)
- simplifying descendant-or-self step(s)
- converting descendant::*:businessEvent[...] to child steps
- simplifying descendant-or-self step(s)
Is it possible that the index doesn’t get applied?, how could I improve this query?
Yes, the index is not applied, otherwise there would be the line "applying attribute index" in the compilation info. That is because of the calls to `fn:data()` around the attribute steps in the `where` clause. These are unnecessary and hide the attribute comparisons from the optimizer. Removing them triggers the optimization in my tests.
Hope that helps, cheers, Leo
BTW: The XML example you posted looks quite "enterprisey" and ignores quite some XML best-practices. Its structure could easily confuse the query optimizer because of all the attribute/text comparisons. If you have any influence on the structure of your data, it would probably be beneficial to encode the `@name` attributes as element names, which are currently all the same anyways. The result could look something like this:
<data> <id>229388252</id> <matriculation>2751 XTE</matriculation> <clientId>XTETVTTJKC</clientId> <driver> <name>driver name</name> <surname>driver surname</surname> <nif>21973887X</nif> <line1>line 1</line1> <line2>Line 2</line2> <city>City name</city> <cp>28197</cp> <region>Region7</region> <country>Country</country> </driver> <accident> <date> <year>2012</year> <month>13</month> <day>22</day> <hour>2</hour> <minute>53</minute> </date> <address> <line1>Avenue 5</line1> <line2>Line2</line2> <city>Madrid</city> <cp>28224</cp> <region>Region3</region> <country>Spain</country> </address> <declaration>Lorem ipsum dolor ....</declaration> </accident> </data>