1. 程式人生 > >Oracle 硬解析與軟解析:硬解析的演示

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同樣會進行硬解析。