2013-07-19 39 views
-3

循环有人问我,在我的学徒以下问题: 为什么查询,如:优化在Oracle

FOR i in (SELECT * FROM TABELKA) LOOP 

效率不高?如何改变它以使其更有效率?

没有添加任何进一步的信息。

+0

什么是你的目的是什么? –

+0

我被告知它效率不高,我必须更改该查询。我正在考虑使用光标而不是这个循环,并改变选择*到选择col1,col2等 – Ragnar

+0

这不是我的意思。为什么你必须循环选择表中的所有记录? –

回答

1

收集,所有数据就进入了一个集合。繁荣!一个查询,你没有循环。

SELECT * 
BULK COLLECT INTO a_collection_type_variable 
FROM a_table; 
+0

噢谢谢你!这是我所需要的! – Ragnar

+4

这可能不是很好的建议。 Oracle 10g +将自动批量收集此类型的循环。 –

+3

除非你想遍历1000万行......批量收集并不总是替代游标循环。对于大集合,可能需要带有限制的光标+批量收集。 – tbone