-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Major - P3
-
None
-
Affects Version/s: None
-
Component/s: Aggregation Framework, Querying, Testing Infrastructure
-
Labels:None
-
Query Optimization
-
Query 2018-01-29
The query system performs a number of distinct optimization steps in order to choose an efficient plan for a query:
- Optimizing any match expressions via MatchExpression::optimize().
- Optimizing any expressions via Expression::optimize().
- Optimizing an aggregation pipeline via Pipeline::optimize().
- Generating indexed plans for a query.
All such optimization steps should improve the run time of the query without actually impacting its behavior. In order to test that optimizations are correct, we should introduce an internal configuration parameter that disables them. This will allow us to build testing infrastructure that compares a server configured with optimizations disabled to a server with optimizations enabled.