Oracle Connect By vs PL SQL循环

时间:2017-07-01 08:15:10

标签: oracle performance plsql

我有一个程序,我们将最后365天作为日期从X开始插入表格。

目前,该过程使用LOOP [365次迭代]并在365 DML语句中插入数据。

根据我的理解,使用连接循环并一次插入所有内容在性能方面将是更好的选择。

请在下面找到我的查询,其中X = 2017年9月30日:

insert into Temp_Table_X as
select (To_Date('30-SEP-2017','DD-MON-RRRR')+1) - rownum 
from dual
connect by rownum <= 365

请告知。

1 个答案:

答案 0 :(得分:2)

SQL语句比PL / SQL循环更快。但对于365行,差异几乎不值得担心。除非你运行这个语句很多,否则肯定会使用SQL。

顺便提一下,您已经硬编码365。闰年怎么样?也许这种变化会更好?

insert into Temp_Table_X    
with x as ( select date '2017-01-31' as st from dual )
select x.st - (level -1)
from x
connect by x.st - level >= add_months(x.st, -12)
/
  

&#34;为什么使用&#34; x为&#34;而不是在from子句中使用子查询?&#34;

没理由。他们是等同的,所以请使用适合自己风格的任何一种。