EmmanuelOga / hypergraphdb

Automatically exported from code.google.com/p/hypergraphdb
1 stars 0 forks source link

Printing a QEP on query.toString() or query.printQEP() #89

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
It would be cool to have a easy way to see, how a query will be evaluated 
using, which indices will be used and how the index results will be intersected.

The idea would be, that calling
hg.make(HGHandle.class, database).compile(
    apply(
        targetAt(database, 0),
        and(
            eq(edgeLabel),
            incidentAt(node, 1)
        )
    )
).toString()

Prints something like:
Maps
- the result of a SortedIntersection of
    - a Predicate based filter
        - filtering the result of a Piped Filter piping
            - the results of find by Searchable
                - searching for "myLabel"
                - using index "hg_string_value_index"
                - using operator "EQ"
            - into find by Searchable
                - searching for <PIPED>
                - using index "indexByValue"
                - using operator "EQ"
        - to retain atoms of type String
    - a Predicate based random accessable filter
        - filtering the incidence set of $nodeId
        - to retain atoms having node $node between idx 1 and 1 in their incidence Set
- using an composite Mapping of
    - deref and
    - getIncidentAtom

This would be very usefull to 
- get a feeling of how the query-execution interacts with the indexes
- immediatly see the results of your index optimizations

Original issue reported on code.google.com by google-a...@gehrels.info on 17 Dec 2012 at 3:19

GoogleCodeExporter commented 9 years ago
Good idea! Thanks :)

Original comment by borislav...@gmail.com on 17 Dec 2012 at 3:22