[ 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)