2013-07-19 76 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