jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alex Parvulescu (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (JCR-2830) JCR-SQL2 : Query on large node-set is (too) slow even when offset and limit is used
Date Fri, 15 Apr 2011 15:56:05 GMT

     [ https://issues.apache.org/jira/browse/JCR-2830?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Alex Parvulescu updated JCR-2830:

    Attachment: JCR-2830.patch

Attaching a patch for this issue.

You'll find that performance is WAY better when doing simple queries with just an offset and
a limit.

just as an idea, for me on a repo that had ~110k nodes, it went from 12s to ~150ms. but that
is extremely contextual, so it is better test on your setup, and give feedback on the patch.

This should be a bit better memory wise too, as the old SortedLuceneQueryHits used to keep
the entire list of docs from lucene, not taking advantage of the buffering that is was already

Also added some tests for the offset&limit changes.

> JCR-SQL2 : Query on large node-set is (too) slow even when offset and limit is used
> -----------------------------------------------------------------------------------
>                 Key: JCR-2830
>                 URL: https://issues.apache.org/jira/browse/JCR-2830
>             Project: Jackrabbit Content Repository
>          Issue Type: Improvement
>          Components: query
>    Affects Versions: 2.3.0
>         Environment: + Win7 (64bit)
> + JR built from latest greatest sources
> + repo with many nodes of same node type > 77'000
>            Reporter: Clemens Wyss
>         Attachments: JCR-2830.patch
> Given a node-set of approx 77'000 entries a SQL2-query limited to 10 nodes takes approx
37 to 59sec (!) whereas the corresponding SQL returns in less than  1sec.
> Query q = session.getWorkspace().getQueryManager().createQuery( "select * from [task]",
Query.SQL2 );
> q.setOffset( 0 ); // or any other offset
> q.setLimit( 10 ); 
> returnValue = q.execute();

This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

View raw message