求解绑定变量执行计划问题
首先感谢大家
情况如下:
某表在starttime和其他字段上建立了唯一索引(starttime ,other_column_name)
这个表里面最老的starttime数据会定期删除
会进来一些新的starttime数据
现在在访问这个表的starttime字段时,采用了绑定变量,类似于
select min(starttime) from table_name where starttime > to_date(:v1,'yyyymmdd') and starttime < to_date(:v2,'yyyymmdd');
select max(starttime) from table_name where starttime > to_date(:v1,'yyyymmdd') and starttime < to_date(:v2,'yyyymmdd');
现在可能会出现以下情况:
第一条select min语句执行时间很长
第二条select max语句执行很快
由于在测试环境没有重现以上的情况,
根据oracle对绑定变量处理的逻辑,第一次的执行计划以后会一直用
所以我怀疑
select min语句在首次生成执行计划时,走的是全表扫描
select max语句在首次生成执行计划时,走的是索引
现在问题是什么样的变量值输入会导致这两个语句在第一次解析时,
生成不同性质的执行计划?