SSE vs MSE
Decide whether a Pinot query should use the single-stage engine or the multi-stage engine.
Use the single-stage engine when the query is straightforward and benefits from the lower overhead of scatter-gather execution. Use the multi-stage engine when the query needs distributed joins, window functions, or other multi-stage operators.
Quick decision
Basic filtering, projection, and standard aggregation
SSE
It is the simplest execution model and keeps query planning compact.
JOINs
MSE
Pinot documents JOIN support on the multi-stage engine.
Window functions
MSE
Window functions require the multi-stage engine.
Query-time partitioned or colocated joins
MSE
These are multi-stage patterns.
Complex operator trees or advanced SQL execution
MSE
The engine is built for distributed query planning and stage-level execution.
Choose SSE when
The query is a plain scatter-gather read over one or more tables.
You only need the function families that are already available in both engines.
You want the lowest conceptual and operational overhead.
SSE is the default fit for the most common Pinot workloads: filter, project, group, and aggregate.
Choose MSE when
You need
JOIN.You need window functions.
You need distributed query execution with intermediate stages.
You are following the multi-stage query syntax, explain plan, or stage stats workflow.
The multi-stage engine was released in Pinot 1.0.0. Since Pinot 1.1.0, it also supports null handling when column-based null storing is enabled.
Engine cues in function docs
The function index uses an engine column to indicate whether a function is available in SSE, MSE, or both. Use that signal as the final check after you decide which engine the query shape needs.
Bothmeans the function is safe to consider in either engine.Multi-stage onlymeans the function depends on the distributed execution model.Variesmeans the support depends on the implementation or the extension that provides the function.
How to enable MSE
When you want to force the multi-stage engine, set the query option explicitly:
You can also enable it from the Query Console or via the REST-based query flow described in the multi-stage setup guide.
Related docs
What this page covered
The practical rule for choosing between SSE and MSE.
The Pinot features that require MSE.
The version milestones and query option used to enable MSE.
Next step
Confirm the engine choice before you design the query, then open the join, window, or function page that matches the pattern.
Related pages
Last updated
Was this helpful?

