/** * @nahisaho/yata-scale - Query Planner * * Generates optimized query execution plans */ import type { GraphQuery, QueryPlan, QueryFilter, IndexType } from '../types.js'; /** * Query plan step */ export interface PlanStep { readonly id: string; readonly type: 'scan' | 'index' | 'filter' | 'join' | 'sort' | 'limit' | 'aggregate'; readonly target?: string; readonly index?: string; readonly filter?: QueryFilter; readonly dependencies: string[]; readonly estimatedCost: number; readonly estimatedRows: number; } /** * Index statistics for planning */ export interface IndexStatistics { readonly name: string; readonly type: IndexType; readonly entryCount: number; readonly selectivity: number; } /** * Query planner for generating execution plans */ export declare class QueryPlanner { private indexStats; constructor(); /** * Register index statistics */ registerIndex(stats: IndexStatistics): void; /** * Unregister index */ unregisterIndex(name: string): void; /** * Generate query plan */ plan(query: GraphQuery): QueryPlan; /** * Plan access path (scan vs index) */ private planAccessPath; /** * Find best index for query */ private findBestIndex; /** * Plan filter step */ private planFilterStep; /** * Plan traversal step */ private planTraversalStep; /** * Plan sort step */ private planSortStep; /** * Plan limit step */ private planLimitStep; /** * Check if plan is parallelizable */ private isParallelizable; /** * Determine target shards for query */ private determineTargetShards; /** * Optimize plan */ optimize(plan: QueryPlan): QueryPlan; /** * Explain plan in human-readable format */ explain(plan: QueryPlan): string; } //# sourceMappingURL=QueryPlanner.d.ts.map