当前位置:Gxlcms > 数据库问题 > oracle新手随记9

oracle新手随记9

时间:2021-07-01 10:21:17 帮助过:21人阅读

returning ename,empno,deptno bulk collect into v_delete;     的行中的某几列返回给变量,而且注意delete后面没有分号
     if v_delete.count >0 then
for i in v_delete.first .. v_delete.last loop
 dbms_output.put_line(v_delete(i).v_ename || v_delete(i).v_empno || v_delete(i).v_deptno);
 end loop;
 end if;
 end;
 /

9. fetch    (bulk collect)into
    returning    (bulk collect)    into
    select       (bulk collect)     into

10. execute immediate (在使用动态sql的时候),该语句在哪都可用,例如在for循环中,begin主语句中;

11. 分析函数不能进行嵌套,但是可以使用子查询来实现嵌套的查询结果,例如:lag(first_value(comm,1),1)子句的语法就是错误的。

12. awr报告是oracle 10g下提供的一种性能收集和分析工具,它能提供一个时间段内整个系统资源使用情况的报告,通过这个报告,我们就可以了解一个系统的整个运行情况,这就像一个人全面的体检报告

13. 优化器(CBO)是个极其复杂的软件,它的主要输入有三个:统计信息,环境相关配置,SQL本身它的工作本质是计算出获取SQL语句指定的特定数据集的最快方法;
 (1).统计信息的采集并不是和数据本身的变化是同步的,所以统计信息也是有一定的时间差,这将导致CBO会根据旧的统计信息决定执行计划,
    这是执行计划不稳定的第一处原因
 (2).运行环境的改变,比如CPU个数,环境变了,CBO可能就会得出新的执行计划了
 (3).对于同一个SQL语句,如果里面涉及到的视图或者绑定变量传过来的值发生了变化,那么执行计划也会发生相应的变化的

14. 直方图:它能够让CBO确切的知道数据的分布是不是均匀的,一般CBO所知道的统计信息直是大概,例如一张表有100行,有10个非重复值,这就是CBO所知道的统计信息,但是并不知道里面的详细信息,在没有直方图的情况下,它会默认的认为不管你取什么值都会的到(100/10)行,这是错误的,因为,这一百行里面可能是1...8九个数字分别一样,最后9数字占了91行。

15. 绑定变量的窥视:指的是,系统会允许CBO看到绑定变量第一次传过来的值,然后根据直方图决定执行计划,问题是,只允许你看第一次,当后面再用之前的那个绑定变量传值的时候,CBO就会默认选择第一次的执行计划,这就是最大的问题。例如:一张表有99行y,有1行x,第一次使用绑定变量传递的是查找y值,那么就会选择全表扫描,第二次传递x值,则还会选择全表扫描,这就影响了查询的性能。
注意:我们可以通过设置参数:_OPTIM_PEEK_USER_BINDS=FALSE来关闭绑定变量窥视这一特性

16. SQL计划指令我理解的是用来提示CBO可能存在或者不正确的统计信息,比如预期的返回行erow是20,但实际的返回行是10000,这是sql执行计划就会提醒CBO这个统计信息是不准确的,那么下次在执行这个SQL的话,CBO会重新解析这句SQL,以获得更好的执行计划

17. 绑定变量窥视和统计信息的变化是导致计划不稳定的最主要的原因。

版权声明:本文为博主原创文章,未经博主允许不得转载。

oracle新手随记9

标签:oracle   数据库   基础   小结   各种知识点   

人气教程排行