使用oracle bulk collect 提高select FETCH LOOP的速度
透過oracle一個特性,加快客戶端SELECT LOOP資料的速度。
使用的特性是oracle bulk collect into 技術。
實現方法如下:
1) 在資料庫中配置:
一次性返回2000條記錄
create or replace procedure pro_test(v_1 out i_table, v_2 out v_table) as
begin
select id, name BULK COLLECT INTO v_1, v_2 from a where rownum <2000 />end;
2 ) 透過JAVA編碼,在客戶端使用oracle.sql.array
一次性取到所有資料,這比在客戶端select 後,再loop速度快多了。
oracle.sql.ARRAY a_test = new oracle.sql.ARRAY(a, oraCon, s1);
oracle.sql.ARRAY b_test = new oracle.sql.ARRAY(b, oraCon, s2);
long aaaa = System.currentTimeMillis();
PreparedStatement pstmt = null;
pstmt = oraCon.prepareCall("{ call pro_test(?,?) }");
pstmt.setObject(1, a_test);
pstmt.setObject(2, b_test);
pstmt.executeUpdate();
測試結果:10000條記錄:
開始時間: 1307497501265
aaa0
結束時間:1307497501421
而透過正常的PL/SQL,則需要4.5秒。
可見,速度提升還是很明顯的
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/197458/viewspace-1050890/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Bulk Collect提高Oracle查詢效率Oracle
- 使用bulk collect實現cursor 批量fetch!
- Oracle中巧用bulk collect實現cursor批次fetchOracle
- Oracle 的 bulk collect用法Oracle
- 用BULK COLLECT 減小LOOP的開銷(1)OOP
- 使用BULK COLLECT+FORALL加速批量提交
- pl/sql中bulk collect的用法SQL
- oracle bulk collects 之 java selectOracleJava
- 【PL/SQL】初試 bulk collectSQL
- 轉摘plsql高階程式設計_table_array_for all_bulk collect into_fetchSQL程式設計
- 使用Forall 與bulk collect的快速複製表資料
- BULK COLLECT FAILS WITH ORA-04030AI
- [20180110]Oracle Bulk Collect and LimitOracleMIT
- oracle中bulk collect into用法 (批次效率提取遊標資料)Oracle
- Oracle資料庫的BULK COLLECT用法之批量增刪改<轉>Oracle資料庫
- APPEND,bulk collect,正常插入比較APP
- oracle10g_plsql_rercursor_type_table of_小引例_bulk collect intoOracleSQL
- 多行資料的批處理之bulk collect
- [20180111]Oracle Bulk Collect and Limit2OracleMIT
- PL/SQL LOB和檔案操作,bulk collectSQL
- 遊標+bulk collect into limit的不同方法查詢資料MIT
- oracle 8i 提高imp速度的方法Oracle
- 提高查詢速度使用materizlizedZed
- 一次遷移思考的記錄--bulk_collect的limit用法MIT
- Elasticsearch的Bulk API使用ElasticsearchAPI
- 提高ORACLE資料庫的查詢統計速度(轉)Oracle資料庫
- Go 語言中的 collect 使用Go
- oracle JDBC insert 最佳化(二) :使用批次寫入,提高oracle資料庫寫速度OracleJDBC資料庫
- 提高sql查詢速度SQL
- 提高count查詢速度
- 如何提高MySQL DELETE 速度MySqldelete
- 離屏Canvas — 使用Web Worker提高你的Canvas執行速度CanvasWeb
- bulk_collect結合dbms_application_info監控資料處理進度APP
- 怎樣才能提高Oracle 10G增量備份速度Oracle 10g
- 如何提高網站的開啟速度?網站
- 提高微信小程式的應用速度微信小程式
- 如何提高 Xcode 的編譯速度XCode編譯
- 如何提高FPGA敲程式碼的速度?FPGA