硬解析的演示

作者: 重庆思庄 | 来源:发表于2019-07-01 16:38 被阅读0次

    硬解析的演示

        下面对上面的两种情形进行演示

        在两个不同的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同样会进行硬解析。

    相关文章

      网友评论

        本文标题:硬解析的演示

        本文链接:https://www.haomeiwen.com/subject/uaqncctx.html