Why Plans Change
Cause | Description |
---|---|
Stats changed | Table, index, or column stats were refreshed. Cardinality estimates changed. |
Bind peeking | The first bind value caused a plan that’s bad for later values. |
No histograms | Optimizer assumes uniform data when actual data is skewed. |
New index or object | The optimizer sees a new access path and tries it. |
Adaptive optimization | Oracle switched plans mid-execution based on early row counts. |
SQL text changed slightly | Even whitespace differences result in new SQL_IDs and plans. |
Cursor aged out | The plan aged out of the shared pool and was regenerated. |