(And clearly both optimizations are *really* important for performance - both in real use cases and also in benchmarks.)

On 4/6/16 8:37 AM, Taewoo Kim wrote:
Hello Magnus,

Right now, the search does not stop until it finds all tuples that satisfies the given predicate. However, if you have an ORDER BY clause before LIMIT, it can stop sorting process in ORDER BY early. That is, it picks top K (in your example, K is 2) and sorting process stops early.

Actually, if the plan qualifies as an index-only plan (the given predicate can be covered by a secondary index search and you only return secondary key field and/or primary key field), the LIMIT can be applied to an index-search so that an index-search can be stopped earlier after finding K tuples. This feature is already implemented but in the code-review now. It would be applied soon.

Best,
Taewoo

On Wed, Apr 6, 2016 at 7:22 AM, Magnus Kongshem <kongs...@online.ntnu.no <mailto:kongs...@online.ntnu.no>> wrote:

    Hey,

    Performing a query with the limit clause, does this cause the
    query to stop searching when it reaches the value of the limit
    parameter(like in SQL), or does it keep searching for every
    matching object and then return the number of objects specified by
    the limit? Example below:

    use dataverse XXX;
    from $obj in dataset YYY
        where $obj.timestamp >= 1412121600
        and $obj.timestamp <= 1412726400
        limit 2
    return $obj;

    Followup questions may occur.

--
    Mvh

    Magnus Alderslyst Kongshem
    +47 415 65 906 <tel:%2B47%20415%2065%20906>



Reply via email to