Oracle 硬解析与软解析:硬解析的演示

硬解析的演示
下面对上面的两种情形进行演示
在两个不一样的session中完成,一个为sys账户的session,一个为scott帐户的session,不一样的session,其SQL命令行以不一样的账户名开头
如" sys@ASMDB> " 表示使用时sys账户的session," scott@ASMDB> "表示scott账户的session
sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;
NAME CLASS VALUE
--当前的硬解析值为569
parse count (hard) 64 569
scott@ASMDB> select * from emp;
sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;
NAME CLASS VALUE
--执行上一个查询后硬解析值为570,解析次数增长了一次
parse count (hard) 64 570
scott@ASMDB> select * from Emp;
sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;
NAME CLASS VALUE
--执行上一个查询后硬解析值为571
parse count (hard) 64 571
scott@ASMDB> select * from EMP;
sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;
NAME CLASS VALUE
--执行上一个查询后硬解析值为572
parse count (hard) 64 572
scott@ASMDB> select * from emp where empno=7369;
sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;
NAME CLASS VALUE
--执行上一个查询后硬解析值为573
parse count (hard) 64 573
scott@ASMDB> select * from emp where empno=7788; --此处原来empno=7369,复制错误所致,现已更正为7788@20130905
sys@ASMDB> select name,class,value from v$sysstat where statistic#=331;
NAME CLASS VALUE
--执行上一个查询后硬解析值为574
parse count (hard) 64 574
从上面的示例中能够看出,尽管执行的语句存在细微的差异,但Oracle仍是为其进行了硬解析,生成了不一样的执行计划。即使是一样的SQL
语句,而两条语句中空格的多少不同,Oracle一样会进行硬解析。
相关文章
相关标签/搜索