-
Type: Bug
-
Resolution: Fixed
-
Priority: Major - P3
-
Affects Version/s: None
-
Component/s: None
-
None
-
Query Optimization
-
Fully Compatible
-
ALL
-
-
QO 2025-02-03
If the $limit is pushed into the $sort, the cardinality estimate of the SORT should reflect the limitAmount:
Enterprise test> db.foo.aggregate([{$sort: {b:1}}, {$limit: 100}]).explain().queryPlanner.winningPlan; { isCached: false, stage: 'SORT', costEstimate: 7.0723816897747245, cardinalityEstimate: 1000, <- INCORRECT, MUST BE 100 estimatesMetadata: { ceSource: 'Metadata' }, sortPattern: { b: 1 }, memLimit: 104857600, limitAmount: 100, type: 'simple', inputStage: { stage: 'COLLSCAN', costEstimate: 0.42847549999999995, cardinalityEstimate: 1000, numDocsEstimate: 1000, estimatesMetadata: { ceSource: 'Metadata' }, direction: 'forward' } }
- related to
-
SERVER-99072 Support CE and costing of limit and skip stages
- Closed
-
SERVER-99907 Complete TODO listed in SERVER-99273
- Closed