Skip to main content

Module optimizer

Module optimizer 

Source
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 interface
  • stats – Statistical information management
  • cost – Cost calculation and estimation
  • analysis – Plan analysis utilities
  • decision – 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