Oracle PipeLined方式究竟能提升多少性能


最近在使用到了Oracle的表函数,尤其是实现嵌套表的数据按表结构进行返回,发现PIPELINED方式,确实能让性能有非常高的提升。

Oracle PipeLined:

看了相关的文章,大致是将数据进行按流水线方式进行处理,执行无等待,而不是那种传统的将本次数据全处理完了,再送往下一个处理环节。

最近找了个时间,特意进行了一下测试。

结论:

1 表函数以嵌套表返回时,是非常耗时与耗内存的;

2 PIPELINED方式,能让数据无等待,效率非常高,尤其是应用在Oracle的表函数返回;

不受SQL语句类型的限制,都能有很好的性能提升,尤其是在大数据量的情况下:

1) select * from table(表函数())

2)还是select count(*) from table(表函数())  (本次过程不体现,但是实际应用使用中确实性能较非PIPELINED方式有非常高的性能提升)

3) 还是select * from table(表函数()) where conditions(本次过程不体现,但是应用中确实性能较非PIPELINED方式有非常高的性能提升)

下面来看具体步骤

1 创建两个辅助类型

CREATE OR REPLACE TYPE performance_e_v IS OBJECT
(
  pid          INTEGER ,
  persionid    VARCHAR2(40),
  datefield    DATE,
  name        VARCHAR2(40),
  account      VARCHAR2(20),
  balance      NUMBER,
  securitycode VARCHAR2(60)
);
/
create or replace type performance_TABLE as table of performance_e_v;
/

  • 1
  • 2
  • 3
  • 下一页

相关内容