[ 
https://issues.apache.org/jira/browse/OAK-2056?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14112094#comment-14112094
 ] 

Przemo Pakulski edited comment on OAK-2056 at 8/27/14 10:01 AM:
----------------------------------------------------------------

I think the reason is that comparator used to sort results have to parse date 
each time when a comparison is needed.

{code}
PropertyStateValue.compareAsDate(...) {
...
            Calendar c1 = ISO8601.parse(v1);
            Calendar c2 = ISO8601.parse(v2);
...
}
{code}

And number of comparisons grows exponentially with a large size of results.

Is there any reason why dates are using _GenericPropertyState_ which keeps 
internally date as string ? 
Can we instead create a _"DatePropertyState"_ which keeps date as a long or 
Calendar?


was (Author: ppakulski):
I think the reason is that comparator used to sort results have to parse date 
each time when a comparison is needed.

{code}
PropertyStateValue.compareAsDate(...)
{code}

And number of comparisons grows exponentially with a large size of results.

Is there any reason why dates are using _GenericPropertyState_ which keeps 
internally date as string ? 
Can we instead create a _"DatePropertyState"_ which keeps date as a long or 
Calendar?

> Optimize orderings by date fields
> ---------------------------------
>
>                 Key: OAK-2056
>                 URL: https://issues.apache.org/jira/browse/OAK-2056
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: query
>    Affects Versions: 1.0.4
>            Reporter: Przemo Pakulski
>              Labels: performance
>
> Sorting by date fields is very slow in oak, especially if result set size is 
> large.
> I'm running the following JCR-SQL2 query
> {code}
> SELECT * FROM [cq:PageContent] AS [c] WHERE ISDESCENDANTNODE('/content')
> {code}
> which returns 3270 results on my oak repo.
> Query execution times are as below
> ---------------------------------------
> No order clause                       |  0,147 sec
> ORDER BY [jcr:createdBy]      |  1,018 sec
> ORDER BY [jcr:created]                | 25,229 sec
> Ordering by date field adds extra 24 seconds overhead.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to