在SQL语句的where子句中对存在索引的列使用函数时,为什么Oracle优化器会忽略掉这些索引?

日期:2013-02-19 14:15:53 人气:2

在SQL语句的where子句中对存在索引的列使用函数时,为什么Oracle优化器会忽略掉这些索引?

where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。 因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。
    A+
热门评论