Re: [bdbxml] Cross Query Performance Issues

John Snelson <[email protected]> Mon, 20 Feb 2006 10:25:35 +0000
Newsgroups gmane.comp.db.dbxml.general
Message-ID <[email protected]>
Deepak Jois wrote:
>>After a quick look, the 'join' that might be causing the problem is:
>>
>>$ref/@swissprot_accession_number = $y/accession
>>
>>you have string equality on both the attribute  and node which looks good ( i think because i'm no XQuery guru )
>>but maybe the values have to be cast to string so the index is used.

This is not a problem. The values returned from 
"@swissprot_accession_number" and "accession" are of type 
xdt:untypedAtomic, which is automatically cast to xs:string to perform 
the equality operation.

> Ok, could you tell me how to do that in XQuery exactly?
> 
>>Or maybe no cross-container optimizations are done ???
> 
> Could someone from Sleepycat confirm that this could be *specifically*
> due to lack of cross container optimisations which have not been
> incorporated so far in DB XML.

Queries accross containers are just as optimised as queries within a 
single container. I've taken a look at your query, and made a few 
adjustments based on the query plan it produces. Can you try this 
(equivalent) query, to see if it performs any better for you:

for $x in collection("enzyme.dbxml")/gnv_enzyme_pathway/db_entry
for $y in collection("upt_swissprot.dbxml")/uniprot/entry
where contains($x/enzyme_description, "Aristolochene") and
   $x/swissprot_reference_list/reference/@swissprot_accession_number = 
$y/accession
return $y/name

If you still need help getting your query to perform faster, it would be 
helpful to see a bigger sample of your data.

John

-- 
John Snelson, Berkeley DB XML Engineer
Sleepycat Software, Inc
http://www.sleepycat.com

Contracted to Sleepycat through Parthenon Computing Ltd
http://blog.parthcomp.com/dbxml


------------------------------------------
To remove yourself from this list, send an
email to [email protected]