看书的时候经常看到说动态绑定sql执行效率高,但是自己还是疑惑它能比一般静态代码执行还快吗(次数少),想看看大家写的比较好的动态绑定存储过程例子,学习学习希望大家一起交流分享,我的email:[email protected]oracle 

解决方案 »

  1.   

    这个意思是说,同样的语句如果只是参数不同,尽量使用绑定变量代替,然后在执行的时候将具体值传给sql语句,这样可以减少sql语句的硬解析——而硬解析是很耗资源的……例如
    select * from table1 where id = 1;

    select * from table1 where id = 2;这样简单的两条语句,在缺省情况下是不能够共享的。也就是说,系统认为这是两条不同的语句,两条语句需要分别解析。——如果类似的语句很多,这个成本就呈线性上涨但是如果你使用参数select * from table1 where id = p_id;
    在执行的时候分别给p_id赋值为1和2,这就是相同的语句,相同的语句只需要1次硬解析。
    无论执行多少次,解析语句的成本只有一次。
      

  2.   

    但是我记得书上说静态sql执行速率比动态速率要高,如果这段sql执行的次数不是很多,我想用静态方法不失为一种更好的选择
      

  3.   


    动态sql 是运行时解析,理论上会慢一些