![]() |
mutable
A Database System for Research and Fast Prototyping
|
Computes the join order using size-based dynamic programming. More...
Public Types | |
using | base_type = PlanEnumeratorCRTP< DPsizeOpt > |
using | Subproblem = QueryGraph::Subproblem |
Public Member Functions | |
template<typename PlanTable > | |
void | operator() (enumerate_tag, PlanTable &PT, const QueryGraph &G, const CostFunction &CF) const |
template<typename PlanTable > | |
void | operator() (const QueryGraph &G, const CostFunction &CF, PlanTable &PT) const |
Enumerate subplans and fill plan table. | |
Computes the join order using size-based dynamic programming.
In addition to DPsize
, applies the following optimizations. First, do not enumerate symmetric subproblems. Second, in case both subproblems are of equal size, consider only subproblems succeeding the first subproblem.
Definition at line 110 of file PlanEnumerator.cpp.
Definition at line 112 of file PlanEnumerator.cpp.
|
inherited |
Definition at line 28 of file PlanEnumerator.hpp.
|
inlineinherited |
Enumerate subplans and fill plan table.
Definition at line 35 of file PlanEnumerator.hpp.
|
inline |
Definition at line 116 of file PlanEnumerator.cpp.
References m::QueryGraph::adjacency_matrix(), m::Database::cardinality_estimator(), m::GospersHack::enumerate_all(), m::GospersHack::enumerate_from(), m::Catalog::Get(), m::Catalog::get_database_in_use(), m::AdjacencyMatrix::is_connected(), and m::QueryGraph::sources().