Expand description
Query Optimization Module
Provide query optimization capabilities, including the management of statistical information, cost calculation, and optimization strategies.
§Module Structure
The optimizer is organized into two main optimization phases:
§Heuristic Optimization (heuristic/)
Rule-based optimizations that always produce better or equivalent plans:
- Predicate Pushdown
- Projection Pushdown
- Elimination Rules
- Merge Operations
- Limit Pushdown
§Cost-Based Optimization (cost_based/)
Statistics-driven optimizations that use cost models:
- Join Order Optimization
- Index Selection
- Traversal Start/Direction Selection
- Aggregate Strategy Selection
- Materialization Decision
§Supporting Modules
engine– The globally unique optimizer engine instance with unified optimization interfacestats– Statistical information managementcost– Cost calculation and estimationanalysis– Plan analysis utilitiesdecision– Optimization decision types
§Usage Examples
use linkrs_query::optimizer::OptimizerEngine;
// Create the optimizer engine (global instance)
let optimizer = OptimizerEngine::default();
// Optimize an execution plan through all enabled phases:
// let optimized_plan = optimizer.optimize(plan, None)?;Re-exports§
pub use builder::OptimizerEngineBuilder;pub use engine::OptimizerEngine;pub use error::CostError;pub use error::CostResult;pub use error::OptimizeError;pub use error::OptimizeResult;pub use partitioning::PartitioningConfig;pub use partitioning::PartitioningDecision;pub use partitioning::PartitioningPlanner;pub use stats::CardinalityFeedbackManager;pub use stats::DecisionFeedbackStore;pub use stats::DecorrelationAdvice;pub use stats::EdgeTypeStatistics;pub use stats::FeedbackDrivenSelectivity;pub use stats::OperatorFeedback;pub use stats::PropertyStatistics;pub use stats::QueryExecutionFeedback;pub use stats::QueryFeedbackHistory;pub use stats::SelectivityFeedbackManager;pub use stats::StatisticsManager;pub use stats::TagStatistics;pub use cost::CostAssigner;pub use cost::CostCalculator;pub use cost::CostModelConfig;pub use cost::SelectivityEstimator;pub use analysis::AggregatedExpressionAnalysis;pub use analysis::AnalysisOptions;pub use analysis::BatchPlanAnalysis;pub use analysis::BatchPlanAnalyzer;pub use analysis::ExpressionAnalysis;pub use analysis::ReferenceCountAnalysis;pub use context::OptimizationContext;pub use cost_based::AggregateContext;pub use cost_based::AggregateSelectionReason;pub use cost_based::AggregateStrategy;pub use cost_based::AggregateStrategyDecision;pub use cost_based::AggregateStrategySelector;pub use cost_based::CandidateStart;pub use cost_based::DegreeInfo;pub use cost_based::DirectionContext;pub use cost_based::DirectionSelectionReason;pub use cost_based::IndexSelection;pub use cost_based::IndexSelector;pub use cost_based::JoinCondition;pub use cost_based::JoinOrderOptimizer;pub use cost_based::JoinOrderResult;pub use cost_based::KeepReason;pub use cost_based::OptimizationMethod;pub use cost_based::PredicateOperator;pub use cost_based::PropertyPredicate;pub use cost_based::SortContext;pub use cost_based::SortEliminationDecision;pub use cost_based::SortEliminationOptimizer;pub use cost_based::SortKeepReason;pub use cost_based::SubqueryUnnestingOptimizer;pub use cost_based::TableInfo;pub use cost_based::TopNConversionReason;pub use cost_based::TraversalDirection;pub use cost_based::TraversalDirectionDecision;pub use cost_based::TraversalDirectionOptimizer;pub use cost_based::TraversalSelectionReason;pub use cost_based::TraversalStartSelector;pub use cost_based::UnnestDecision;pub use cost_based::UnnestReason;pub use crate::cache::CteCacheConfig;pub use crate::cache::CteCacheDecision;pub use crate::cache::CteCacheDecisionMaker;pub use crate::cache::CteCacheEntry;pub use crate::cache::CteCacheManager;pub use crate::cache::CteCacheStats;pub use heuristic::BaseRewriteRule;pub use heuristic::EliminationRule;pub use heuristic::HeuristicRule;pub use heuristic::HeuristicRuleAdapter;pub use heuristic::IntoOptRule;pub use heuristic::MatchedResult;pub use heuristic::MergeRule;pub use heuristic::NodeRewriter;pub use heuristic::PushDownRule;pub use heuristic::RewriteContext;pub use heuristic::RewriteError;pub use heuristic::RewriteRule;pub use heuristic::RuleWrapper;pub use heuristic::TransformResult;pub use decision::AccessPath;pub use decision::EntityIndexChoice;pub use decision::EntityType;pub use decision::IndexChoice;pub use decision::IndexSelectionDecision;pub use decision::JoinAlgorithm;pub use decision::JoinOrderDecision;pub use decision::OptimizationDecision;pub use decision::RewriteRuleId;pub use decision::TraversalStartDecision;
Modules§
- analysis
- Plan Analysis Module
- builder
- Optimizer Engine Builder Module
- context
- Optimization Context Module
- cost
- Cost Calculation Module
- cost_
based - Cost-Based Optimization Module
- decision
- Optimized Decision-Making Module
- engine
- Optimizer Engine Module
- error
- Optimizer error type
- factorization
- heuristic
- Heuristic Optimization Module
- partitioning
- Conservative physical partition selection for streaming plans.
- stats
- Statistics Information Module