Ok, so I took your advice and created a new data set with a filter on
timestamp and only a fraction of the indexes I had previously created. I
only kept the indexes based on the fields building, floor and id.

Attached you will find:

- The DLL for the data set
- The optimized logical plan for each query. (excluding query number six) I
used a timestamp range of 30 days, I'll test on 7 days and 1 day tomorrow.
- The optimized logical plan for a full table scan on the data set.

The results was disappointing unfortunately. The attached diagram shows the
query results compared to the other two tests I have performed. To be
clear, the gray bars represent the data set with the DLL attached in this
e-mail. I tried to decipher the logical plan for each query, but I did not
get anything reasonable out of it.

It's worth mentioning that AsterixDB currently does not support creating
filters on a data set with an auto generated UID field, unless there is
some magic that I am not aware of. This means I had to create a UUID for
each record in my data set before loading it into AsterixDB. This was
performed in Java 7 with UUID.randomUUID();

Any thoughts guys? Am I missing something?

BG,
Magnus

On Sun, May 29, 2016 at 8:32 AM, Sattam Alsubaiee <[email protected]>
wrote:

> Creating indexes on fields with high selectivities (such as hourOfDay
> and dayOfWeek) are not encouraged at all. Each secondary index lookup will
> have to probe the primary index to fetch other fields in the record. It
> would be much more efficient if you just perform scans as opposed of
> accessing secondary indexes when querying such fields.
>
> I would recommend that you drop at least the following indexes:
> drop index posdata.hour;
> drop index posdata.day;
>
> Also I would highly recommend that you utilize AsterixDB filters, which is
> very good optimization (could save up to 99% of query time) when you deal
> with time-correlated fields such as timestamps:
> https://asterixdb.apache.org/docs/0.8.8-incubating/aql/filters.html
> http://dl.acm.org/citation.cfm?id=2786007
>
> Cheers,
> Sattam
>
> On Sun, May 29, 2016 at 8:58 AM, Michael Carey <[email protected]>
> wrote:
>
>> @Pouria: Please share your findings here when you check this out - this
>> is quite strange, since none of the other performance results that have
>> been obtained on the system have looked anything like this.  (I will try to
>> look at this too at some point, but will unfortunately be MIA from June
>> 1-15 first.)  Weird....
>>
>> On 5/26/16 9:20 AM, Pouria Pirzadeh wrote:
>>
>> Hi Magnus,
>>
>> Thanks for your email and sharing the information.
>> If it is Ok with you, Would you please share with us the exact DDL
>> (including type definitions, dataset and index definitions) and exact AQL
>> queries that you ran against AsterixDB ?
>> I am just interested in checking the query plans and see what ended up
>> being run as jobs.
>>
>> Thanks.
>> Pouria
>>
>> On Thu, May 26, 2016 at 4:59 AM, Magnus Kongshem <[email protected]
>> > wrote:
>>
>>> Hi,
>>>
>>> There has been a lot of questions from me regarding AsterixDB and I
>>> thank all of you who have answered me. So it is time for me to contribute
>>> with some obeservations. I am writing my master thesis where I test
>>> multiple databases on a large data set. I should also mention that I have
>>> installed AsterixDB on a single machine.
>>>
>>> What I have observed is that asterixDB has a "poorer" read performance
>>> when I specify indexes on the data set compared to not implementing any
>>> indexes. See the attachment for details, its an excerpt of my thesis
>>> explaining and describing the queries, the indexes and the test results.
>>> Any thoughts on these test results?
>>>
>>> I also cannot help to notice that the read performance for a query
>>> querying a small portion, medium portion and large portion of the data set
>>> is very similar. The largest query finds 75 million records and the
>>> smallest query finds 3.5 million records, but almost have the same read
>>> performance. How can this be?
>>>
>>> Perhaps you can use these test results in the future development of
>>> asterixDB.
>>>
>>> I you would like, I can send you my final thesis when it's done.
>>>
>>> --
>>>
>>> Mvh
>>>
>>> Magnus Alderslyst Kongshem
>>> +47 415 65 906 <%2B47%20415%2065%20906>
>>>
>>
>>
>>
use dataverse bigd;

    

create type table2 as open {
        
uid: string,
        
campus: string,
        
building: string,
        
floor: string,
        
timestamp: int32,
        
dayOfWeek: int32,
        
hourOfDay: int32,
        
latitude: double,
        
salt_timestamp: int32,
        
longitude: double,
        
id: string,
        
accuracy: double
    
}

create dataset posdata3(table2)
    
        primary key uid with filter on timestamp;

create index id on posdata3(id);

create index building on posdata3(building);

create index floor on posdata3(floor);



load dataset posdata3 using localfs 
(("path"="localhost:///path/to/dataset/all.adm"),("format"="adm"));
Full table scan)



count(for $obj in dataset posdata return $obj);
Duration: 348 seconds


-----------------------------------------

distribute result [%0->$$5]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    aggregate [$$5] <- [function-call: asterix:agg-sum, Args:[%0->$$7]]
    -- AGGREGATE  |UNPARTITIONED|
      exchange 
      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
        aggregate [$$7] <- [function-call: asterix:agg-count, Args:[%0->$$0]]
        -- AGGREGATE  |PARTITIONED|
          project ([$$0])
          -- STREAM_PROJECT  |PARTITIONED|
            exchange 
            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
              data-scan []<-[$$6, $$0] <- bigd:posdata3
              -- DATASOURCE_SCAN  |PARTITIONED|
                exchange 
                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                  empty-tuple-source
                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
Query number 2)


count(from $obj in dataset posdata
    
where $obj.timestamp >= 1412121600 and $obj.timestamp <= 1414800000 and 
$obj.hourOfDay > 9 and $obj.hourOfDay < 15
    
return $obj);


------------------------------------


distribute result [%0->$$14]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    aggregate [$$14] <- [function-call: asterix:agg-sum, Args:[%0->$$18]]
    -- AGGREGATE  |UNPARTITIONED|
      exchange 
      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
        aggregate [$$18] <- [function-call: asterix:agg-count, Args:[%0->$$0]]
        -- AGGREGATE  |PARTITIONED|
          project ([$$0])
          -- STREAM_PROJECT  |PARTITIONED|
            select (function-call: algebricks:and, Args:[function-call: 
algebricks:gt, Args:[%0->$$15, AInt64: {9}], function-call: algebricks:lt, 
Args:[%0->$$15, AInt64: {15}], function-call: algebricks:le, Args:[%0->$$16, 
AInt64: {1414800000}], function-call: algebricks:ge, Args:[%0->$$16, AInt64: 
{1412121600}]])
            -- STREAM_SELECT  |PARTITIONED|
              assign [$$16, $$15] <- [function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {4}], function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {6}]]
              -- ASSIGN  |PARTITIONED|
                project ([$$0])
                -- STREAM_PROJECT  |PARTITIONED|
                  exchange 
                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                    data-scan []<-[$$17, $$0] <- bigd:posdata3
                    -- DATASOURCE_SCAN  |PARTITIONED|
                      exchange 
                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                        assign [$$19, $$20] <- [AInt64: {1414800000}, AInt64: 
{1412121600}]
                        -- ASSIGN  |PARTITIONED|
                          empty-tuple-source
                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
Query number 3)


count(from $obj in dataset posdata
    
where $obj.timestamp >= 1412121600 and $obj.timestamp <= 1414800000 and 
$obj.hourOfDay > 9 and $obj.hourOfDay < 15 and ($obj.dayOfWeek = 1 or 
$obj.dayOfWeek = 3)
    
return $obj);


------------------------------------

distribute result [%0->$$19]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    aggregate [$$19] <- [function-call: asterix:agg-sum, Args:[%0->$$25]]
    -- AGGREGATE  |UNPARTITIONED|
      exchange 
      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
        aggregate [$$25] <- [function-call: asterix:agg-count, Args:[%0->$$0]]
        -- AGGREGATE  |PARTITIONED|
          project ([$$0])
          -- STREAM_PROJECT  |PARTITIONED|
            exchange 
            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
              join (function-call: algebricks:eq, Args:[%0->$$24, %0->$$20])
              -- HYBRID_HASH_JOIN [$$24][$$20]  |PARTITIONED|
                exchange 
                -- HASH_PARTITION_EXCHANGE [$$24]  |PARTITIONED|
                  unnest $$24 <- function-call: asterix:scan-collection, 
Args:[AOrderedList: [ AInt64: {1}, AInt64: {3} ]]
                  -- UNNEST  |UNPARTITIONED|
                    empty-tuple-source
                    -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
                exchange 
                -- HASH_PARTITION_EXCHANGE [$$20]  |PARTITIONED|
                  project ([$$0, $$20])
                  -- STREAM_PROJECT  |PARTITIONED|
                    select (function-call: algebricks:and, Args:[function-call: 
algebricks:lt, Args:[%0->$$21, AInt64: {15}], function-call: algebricks:gt, 
Args:[%0->$$21, AInt64: {9}], function-call: algebricks:ge, Args:[%0->$$22, 
AInt64: {1412121600}], function-call: algebricks:le, Args:[%0->$$22, AInt64: 
{1414800000}]])
                    -- STREAM_SELECT  |PARTITIONED|
                      assign [$$22, $$21, $$20] <- [function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {4}], function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {6}], function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {5}]]
                      -- ASSIGN  |PARTITIONED|
                        project ([$$0])
                        -- STREAM_PROJECT  |PARTITIONED|
                          exchange 
                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                            data-scan []<-[$$23, $$0] <- bigd:posdata3
                            -- DATASOURCE_SCAN  |PARTITIONED|
                              exchange 
                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                assign [$$26, $$27] <- [AInt64: {1412121600}, 
AInt64: {1414800000}]
                                -- ASSIGN  |PARTITIONED|
                                  empty-tuple-source
                                  -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
Query number 4)


count(from $obj in dataset posdata
    
where $obj.timestamp >= 1412121600 and $obj.timestamp <= 1414800000 and 
$obj.hourOfDay > 9 and $obj.hourOfDay < 15 and $obj.building = "IT-Vest"
    
return $obj);


------------------------------------


distribute result [%0->$$16]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    aggregate [$$16] <- [function-call: asterix:agg-sum, Args:[%0->$$21]]
    -- AGGREGATE  |UNPARTITIONED|
      exchange 
      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
        aggregate [$$21] <- [function-call: asterix:agg-count, Args:[%0->$$0]]
        -- AGGREGATE  |PARTITIONED|
          project ([$$0])
          -- STREAM_PROJECT  |PARTITIONED|
            select (function-call: algebricks:and, Args:[function-call: 
algebricks:eq, Args:[function-call: asterix:field-access-by-index, 
Args:[%0->$$0, AInt32: {2}], AString: {IT-Vest}], function-call: algebricks:lt, 
Args:[%0->$$17, AInt64: {15}], function-call: algebricks:gt, Args:[%0->$$17, 
AInt64: {9}], function-call: algebricks:le, Args:[%0->$$18, AInt64: 
{1414800000}], function-call: algebricks:ge, Args:[%0->$$18, AInt64: 
{1412121600}]])
            -- STREAM_SELECT  |PARTITIONED|
              assign [$$18, $$17] <- [function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {4}], function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {6}]]
              -- ASSIGN  |PARTITIONED|
                project ([$$0])
                -- STREAM_PROJECT  |PARTITIONED|
                  exchange 
                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                    unnest-map [$$19, $$0] <- function-call: 
asterix:index-search, Args:[AString: {posdata3}, AInt32: {0}, AString: {bigd}, 
AString: {posdata3}, ABoolean: {false}, ABoolean: {false}, ABoolean: {false}, 
AInt32: {1}, %0->$$25, AInt32: {1}, %0->$$25, TRUE, TRUE, TRUE]
                    -- BTREE_SEARCH  |PARTITIONED|
                      exchange 
                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                        assign [$$26, $$27] <- [AInt64: {1414800000}, AInt64: 
{1412121600}]
                        -- ASSIGN  |PARTITIONED|
                          exchange 
                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                            order (ASC, %0->$$25) 
                            -- STABLE_SORT [$$25(ASC)]  |PARTITIONED|
                              exchange 
                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                project ([$$25])
                                -- STREAM_PROJECT  |PARTITIONED|
                                  exchange 
                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                    unnest-map [$$24, $$25] <- function-call: 
asterix:index-search, Args:[AString: {building}, AInt32: {0}, AString: {bigd}, 
AString: {posdata3}, ABoolean: {false}, ABoolean: {false}, ABoolean: {false}, 
AInt32: {1}, %0->$$22, AInt32: {1}, %0->$$23, TRUE, TRUE, TRUE]
                                    -- BTREE_SEARCH  |PARTITIONED|
                                      exchange 
                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                        assign [$$28, $$29, $$22, $$23] <- 
[AInt64: {1414800000}, AInt64: {1412121600}, AString: {IT-Vest}, AString: 
{IT-Vest}]
                                        -- ASSIGN  |PARTITIONED|
                                          empty-tuple-source
                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
Query number 5)


count(from $obj in dataset posdata
    
where $obj.timestamp >= 1412121600 and $obj.timestamp <= 1414800000 and 
$obj.accuracy < 10
    
return $obj);


------------------------------------
distribute result [%0->$$12]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    aggregate [$$12] <- [function-call: asterix:agg-sum, Args:[%0->$$16]]
    -- AGGREGATE  |UNPARTITIONED|
      exchange 
      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
        aggregate [$$16] <- [function-call: asterix:agg-count, Args:[%0->$$0]]
        -- AGGREGATE  |PARTITIONED|
          project ([$$0])
          -- STREAM_PROJECT  |PARTITIONED|
            select (function-call: algebricks:and, Args:[function-call: 
algebricks:lt, Args:[function-call: asterix:field-access-by-index, 
Args:[%0->$$0, AInt32: {11}], AInt64: {10}], function-call: algebricks:le, 
Args:[%0->$$13, AInt64: {1414800000}], function-call: algebricks:ge, 
Args:[%0->$$13, AInt64: {1412121600}]])
            -- STREAM_SELECT  |PARTITIONED|
              assign [$$13] <- [function-call: asterix:field-access-by-index, 
Args:[%0->$$0, AInt32: {4}]]
              -- ASSIGN  |PARTITIONED|
                project ([$$0])
                -- STREAM_PROJECT  |PARTITIONED|
                  exchange 
                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                    data-scan []<-[$$14, $$0] <- bigd:posdata3
                    -- DATASOURCE_SCAN  |PARTITIONED|
                      exchange 
                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                        assign [$$17, $$18] <- [AInt64: {1414800000}, AInt64: 
{1412121600}]
                        -- ASSIGN  |PARTITIONED|
                          empty-tuple-source
                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
Query number 7)


count(from $obj in dataset posdata
    
where $obj.timestamp >= 1412121600 and $obj.timestamp <= 1414800000 and 
$obj.hourOfDay > 9 and $obj.hourOfDay < 15 and ($obj.dayOfWeek = 1 or 
$obj.dayOfWeek = 3) and $obj.building = "Realfagbygget" and $obj.floor = "4. 
etasje"
    
return $obj);


------------------------------------


distribute result [%0->$$23]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    aggregate [$$23] <- [function-call: asterix:agg-sum, Args:[%0->$$31]]
    -- AGGREGATE  |UNPARTITIONED|
      exchange 
      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
        aggregate [$$31] <- [function-call: asterix:agg-count, Args:[%0->$$0]]
        -- AGGREGATE  |PARTITIONED|
          project ([$$0])
          -- STREAM_PROJECT  |PARTITIONED|
            exchange 
            -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
              join (function-call: algebricks:eq, Args:[%0->$$28, %0->$$24])
              -- HYBRID_HASH_JOIN [$$28][$$24]  |PARTITIONED|
                exchange 
                -- HASH_PARTITION_EXCHANGE [$$28]  |PARTITIONED|
                  unnest $$28 <- function-call: asterix:scan-collection, 
Args:[AOrderedList: [ AInt64: {1}, AInt64: {3} ]]
                  -- UNNEST  |UNPARTITIONED|
                    empty-tuple-source
                    -- EMPTY_TUPLE_SOURCE  |UNPARTITIONED|
                exchange 
                -- HASH_PARTITION_EXCHANGE [$$24]  |PARTITIONED|
                  project ([$$0, $$24])
                  -- STREAM_PROJECT  |PARTITIONED|
                    select (function-call: algebricks:and, Args:[function-call: 
algebricks:eq, Args:[function-call: asterix:field-access-by-index, 
Args:[%0->$$0, AInt32: {2}], AString: {Realfagbygget}], function-call: 
algebricks:eq, Args:[function-call: asterix:field-access-by-index, 
Args:[%0->$$0, AInt32: {3}], AString: {4. etasje}], function-call: 
algebricks:lt, Args:[%0->$$25, AInt64: {15}], function-call: algebricks:gt, 
Args:[%0->$$25, AInt64: {9}], function-call: algebricks:ge, Args:[%0->$$26, 
AInt64: {1412121600}], function-call: algebricks:le, Args:[%0->$$26, AInt64: 
{1414800000}]])
                    -- STREAM_SELECT  |PARTITIONED|
                      assign [$$26, $$25, $$24] <- [function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {4}], function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {6}], function-call: 
asterix:field-access-by-index, Args:[%0->$$0, AInt32: {5}]]
                      -- ASSIGN  |PARTITIONED|
                        project ([$$0])
                        -- STREAM_PROJECT  |PARTITIONED|
                          exchange 
                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                            unnest-map [$$27, $$0] <- function-call: 
asterix:index-search, Args:[AString: {posdata3}, AInt32: {0}, AString: {bigd}, 
AString: {posdata3}, ABoolean: {false}, ABoolean: {false}, ABoolean: {false}, 
AInt32: {1}, %0->$$35, AInt32: {1}, %0->$$35, TRUE, TRUE, TRUE]
                            -- BTREE_SEARCH  |PARTITIONED|
                              exchange 
                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                assign [$$36, $$37] <- [AInt64: {1412121600}, 
AInt64: {1414800000}]
                                -- ASSIGN  |PARTITIONED|
                                  exchange 
                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                    order (ASC, %0->$$35) 
                                    -- STABLE_SORT [$$35(ASC)]  |PARTITIONED|
                                      exchange 
                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                        project ([$$35])
                                        -- STREAM_PROJECT  |PARTITIONED|
                                          exchange 
                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                            unnest-map [$$34, $$35] <- 
function-call: asterix:index-search, Args:[AString: {building}, AInt32: {0}, 
AString: {bigd}, AString: {posdata3}, ABoolean: {false}, ABoolean: {false}, 
ABoolean: {false}, AInt32: {1}, %0->$$32, AInt32: {1}, %0->$$33, TRUE, TRUE, 
TRUE]
                                            -- BTREE_SEARCH  |PARTITIONED|
                                              exchange 
                                              -- ONE_TO_ONE_EXCHANGE  
|PARTITIONED|
                                                assign [$$38, $$39, $$32, $$33] 
<- [AInt64: {1412121600}, AInt64: {1414800000}, AString: {Realfagbygget}, 
AString: {Realfagbygget}]
                                                -- ASSIGN  |PARTITIONED|
                                                  empty-tuple-source
                                                  -- EMPTY_TUPLE_SOURCE  
|PARTITIONED|
Query number 8)


count(from $obj in dataset posdata
    
where $obj.timestamp >= 1412121600 and $obj.timestamp <= 1414800000 and 
$obj.building = "Realfagbygget"
    
return $obj);


------------------------------------




distribute result [%0->$$12]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    aggregate [$$12] <- [function-call: asterix:agg-sum, Args:[%0->$$16]]
    -- AGGREGATE  |UNPARTITIONED|
      exchange 
      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
        aggregate [$$16] <- [function-call: asterix:agg-count, Args:[%0->$$0]]
        -- AGGREGATE  |PARTITIONED|
          project ([$$0])
          -- STREAM_PROJECT  |PARTITIONED|
            select (function-call: algebricks:and, Args:[function-call: 
algebricks:eq, Args:[function-call: asterix:field-access-by-index, 
Args:[%0->$$0, AInt32: {2}], AString: {Realfagbygget}], function-call: 
algebricks:le, Args:[%0->$$13, AInt64: {1414800000}], function-call: 
algebricks:ge, Args:[%0->$$13, AInt64: {1412121600}]])
            -- STREAM_SELECT  |PARTITIONED|
              assign [$$13] <- [function-call: asterix:field-access-by-index, 
Args:[%0->$$0, AInt32: {4}]]
              -- ASSIGN  |PARTITIONED|
                project ([$$0])
                -- STREAM_PROJECT  |PARTITIONED|
                  exchange 
                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                    unnest-map [$$14, $$0] <- function-call: 
asterix:index-search, Args:[AString: {posdata3}, AInt32: {0}, AString: {bigd}, 
AString: {posdata3}, ABoolean: {false}, ABoolean: {false}, ABoolean: {false}, 
AInt32: {1}, %0->$$20, AInt32: {1}, %0->$$20, TRUE, TRUE, TRUE]
                    -- BTREE_SEARCH  |PARTITIONED|
                      exchange 
                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                        assign [$$21, $$22] <- [AInt64: {1414800000}, AInt64: 
{1412121600}]
                        -- ASSIGN  |PARTITIONED|
                          exchange 
                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                            order (ASC, %0->$$20) 
                            -- STABLE_SORT [$$20(ASC)]  |PARTITIONED|
                              exchange 
                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                project ([$$20])
                                -- STREAM_PROJECT  |PARTITIONED|
                                  exchange 
                                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                    unnest-map [$$19, $$20] <- function-call: 
asterix:index-search, Args:[AString: {building}, AInt32: {0}, AString: {bigd}, 
AString: {posdata3}, ABoolean: {false}, ABoolean: {false}, ABoolean: {false}, 
AInt32: {1}, %0->$$17, AInt32: {1}, %0->$$18, TRUE, TRUE, TRUE]
                                    -- BTREE_SEARCH  |PARTITIONED|
                                      exchange 
                                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                        assign [$$23, $$24, $$17, $$18] <- 
[AInt64: {1414800000}, AInt64: {1412121600}, AString: {Realfagbygget}, AString: 
{Realfagbygget}]
                                        -- ASSIGN  |PARTITIONED|
                                          empty-tuple-source
                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
Query number 1)


count(from $obj in dataset posdata
    
where $obj.timestamp >= 1412121600 and $obj.timestamp <= 1414800000
    
return $obj);


------------------------------------



distribute result [%0->$$10]
-- DISTRIBUTE_RESULT  |UNPARTITIONED|
  exchange 
  -- ONE_TO_ONE_EXCHANGE  |UNPARTITIONED|
    aggregate [$$10] <- [function-call: asterix:agg-sum, Args:[%0->$$13]]
    -- AGGREGATE  |UNPARTITIONED|
      exchange 
      -- RANDOM_MERGE_EXCHANGE  |PARTITIONED|
        aggregate [$$13] <- [function-call: asterix:agg-count, Args:[%0->$$0]]
        -- AGGREGATE  |PARTITIONED|
          project ([$$0])
          -- STREAM_PROJECT  |PARTITIONED|
            select (function-call: algebricks:and, Args:[function-call: 
algebricks:ge, Args:[%0->$$11, AInt64: {1412121600}], function-call: 
algebricks:le, Args:[%0->$$11, AInt64: {1414800000}]])
            -- STREAM_SELECT  |PARTITIONED|
              assign [$$11] <- [function-call: asterix:field-access-by-index, 
Args:[%0->$$0, AInt32: {4}]]
              -- ASSIGN  |PARTITIONED|
                project ([$$0])
                -- STREAM_PROJECT  |PARTITIONED|
                  exchange 
                  -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                    data-scan []<-[$$12, $$0] <- bigd:posdata3
                    -- DATASOURCE_SCAN  |PARTITIONED|
                      exchange 
                      -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                        assign [$$14, $$15] <- [AInt64: {1412121600}, AInt64: 
{1414800000}]
                        -- ASSIGN  |PARTITIONED|
                          empty-tuple-source
                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|

Reply via email to