在为我的系统执行的查询生成解释计划时,我注意到如果我将过滤器保留为参数化形式(例如“somecolumn=:param1”),当我将参数替换为实际值(例如“somecolumn ='real_value'). 在我的例子中,带有数据库参数的解释计划最终会忽略索引并对大量表进行全表扫描,从而导致高成本、字节数和估计行数。
为什么计划不同?Oracle 是否因为系统使用绑定参数而使用了不太理想的计划?
在为我的系统执行的查询生成解释计划时,我注意到如果我将过滤器保留为参数化形式(例如“somecolumn=:param1”),当我将参数替换为实际值(例如“somecolumn ='real_value'). 在我的例子中,带有数据库参数的解释计划最终会忽略索引并对大量表进行全表扫描,从而导致高成本、字节数和估计行数。
为什么计划不同?Oracle 是否因为系统使用绑定参数而使用了不太理想的计划?