oracle里面SGA里面分为shared pool,DB Buffers cache,redo log buffers.其中,shared pool里面分为library cache和dictionary cache. 第一次运行存储过程的时候,需要时间进行解析,并把解析后的执行计划放到library cache里面.以后,你再执行存储过程的时候,oracle会在library cache里面去找是否有相同的执行计划.如果有的话,直接使用.不同的话,重新解析.注:上面所说就是存储过程传递参数的机制,使得解析后的执行计划是相同的.如果没有传递参数机制的话,如 select * from a where conditionA 和 select * from a where conditionB,这二句的执行计划就是不同的,需要重新parse
过程中SQL语句读取的数据可能来自第一次的cache中,因此比物理读取数据更快
属于软解析的问题
第一次运行存储过程的时候,需要时间进行解析,并把解析后的执行计划放到library cache里面.以后,你再执行存储过程的时候,oracle会在library cache里面去找是否有相同的执行计划.如果有的话,直接使用.不同的话,重新解析.注:上面所说就是存储过程传递参数的机制,使得解析后的执行计划是相同的.如果没有传递参数机制的话,如
select * from a where conditionA 和 select * from a where conditionB,这二句的执行计划就是不同的,需要重新parse