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