linkrs_query/optimizer/heuristic/join_optimization.rs
1//! JOIN Optimization Rules
2//!
3//! This module contains optimization rules specifically for JOIN operations.
4//! These rules aim to improve JOIN performance through various transformations.
5//!
6//! # Basic JOIN Optimization
7//! - PushProjectDownJoinRule: Push projection operations down to JOIN inputs
8//! - LeftJoinToInnerJoinRule: Convert LeftJoin to InnerJoin when possible
9//! - JoinConditionSimplifyRule: Simplify and deduplicate JOIN conditions
10//! - ExtractEquiJoinKeysRule: Move cross-side Filter equalities into InnerJoin keys
11//!
12//! # Graph Traversal Optimization
13//! - JoinToExpandRule: Convert vertex-edge JOIN to ExpandAll
14//! - JoinToAppendVerticesRule: Convert edge-vertex JOIN to AppendVertices
15//! - MergeConsecutiveExpandRule: Merge consecutive ExpandAll into Traverse
16//!
17//! # Advanced Optimization
18//! - JoinEliminationRule: Eliminate redundant JOIN operations
19//! - IndexJoinSelectionRule: Select index-based JOIN when appropriate
20//! - JoinReorderRule: Reorder multi-table JOINs for better performance
21
22pub mod extract_equi_join_keys;
23pub mod index_join_selection;
24pub mod join_condition_simplify;
25pub mod join_elimination;
26pub mod join_reorder;
27pub mod join_to_append_vertices;
28pub mod join_to_expand;
29pub mod left_join_to_inner_join;
30pub mod merge_consecutive_expand;
31pub mod push_project_down_join;
32
33pub use extract_equi_join_keys::ExtractEquiJoinKeysRule;
34pub use index_join_selection::IndexJoinSelectionRule;
35pub use join_condition_simplify::JoinConditionSimplifyRule;
36pub use join_elimination::JoinEliminationRule;
37pub use join_reorder::JoinReorderRule;
38pub use join_to_append_vertices::JoinToAppendVerticesRule;
39pub use join_to_expand::JoinToExpandRule;
40pub use left_join_to_inner_join::LeftJoinToInnerJoinRule;
41pub use merge_consecutive_expand::MergeConsecutiveExpandRule;
42pub use push_project_down_join::PushProjectDownJoinRule;