Oracle 硬解析與軟解析:硬解析的演示
阿新 • • 發佈:2019-07-02
硬解析的演示
下面對上面的兩種情形進行演示
在兩個不同的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同樣會進行硬解析。