You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by "Christian Tzolov (JIRA)" <ji...@apache.org> on 2017/03/03 06:04:45 UTC

[jira] [Created] (GEODE-2588) OQL's ORDER BY takes 13x (1300%) more time compared to plain java sort for the same amount of data and same resources

Christian Tzolov created GEODE-2588:
---------------------------------------

             Summary: OQL's ORDER BY takes 13x (1300%) more time compared to plain java sort for the same amount of data and same resources
                 Key: GEODE-2588
                 URL: https://issues.apache.org/jira/browse/GEODE-2588
             Project: Geode
          Issue Type: Bug
          Components: querying
            Reporter: Christian Tzolov


For Partition Region with 1 500 000 entries running on a single Geode member.
The OQL query *SELECT DISTINCT a, b FROM /region ORDER BY b* takes *13x* times (*1300%*) more time compared to OQL *SELECT a, b FROM /region* +  manual Java sort of the result for the same dataset.

Setup: Geode 1.0.0 with Partition region with 1 500 000 objects, 4GB memory

1. OQL with DISTINCT/ORDER BY
{code}SELECT DISTINCT e.key,e.day FROM /partitionRegion e ORDER BY e.day{code}
OQL execution time: 64899 ms = *~65 sec*

2. OQL with manual sort
{code}SELECT e.key,e.day FROM /partitionRegion e{code}
and then
{code}
//OQL all -> 3058 ms
SelectResults result = (SelectResults) query.execute(bindings);

//Client-side sort -> 1830 ms
List<?> result2 = (List<?>) result.asList().parallelStream().sorted((o1, o2) -> {
    Struct st1 = (Struct) o1;
    Struct st2 = (Struct) o2;
    return ((Date) st1.get("day")).compareTo((Date) st2.get("day"));
}).collect(toList());
{code}
OQL execution time: 3058 ms,
Client-side sort time: 1830 ms
Total time: 4888 ms = *~5 sec*



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)