Oracle数据库有一种叫做「Result Cache」的特性,它允许在第二次执行相同的查询时使用缓存结果以提高查询效率。但是,并不是所有的查询都能够使用缓存结果。有些情况下,查询可能不会走缓存,需要重新执行查询以获取最新的数据。
这些情况包括:
查询中使用了随机函数,例如DBMS_RANDOM。
查询中使用了系统函数,例如SYSDATE。
查询中使用了序列,例如NEXTVAL。
查询中使用了动态SQL,例如EXECUTE IMMEDIATE。
查询中使用了自定义函数,例如自定义存储过程。
使用了DML操作(数据更新操作),例如INSERT、UPDATE、DELETE。
查询中使用了特殊的绑定变量,例如询问日期。
查询结果被更改或者表结构发生变化。
因此,如果您的查询不走缓存,请检查是否存在上述情况。