Oracle has a feature called
“bind variable peeking” whereby an execution plan for an SQL is generated based
on the bind variable values used in the SQL. This technique sometimes created
suboptimal execution plan because the plan might be perfect for the SQL
containing bind variables based on which this plan was generated, but if same
SQL is executed later with different values in bind variables, this current
plan may not be optimal for those values, and might cause performance
degradation for the SQL. I have discusses a real scenario in this
article.