首頁 >資料庫 >mysql教程 >Oracle中如何有效率地執行多行插入?

Oracle中如何有效率地執行多行插入?

Patricia Arquette
Patricia Arquette原創
2025-01-22 18:04:12163瀏覽

How to Efficiently Perform Multi-Row Inserts in Oracle?

Oracle資料庫高效多行插入方法

與MySQL單語句多行插入不同,Oracle資料庫不支援這種直接方式。 但我們可以透過幾種方法實現類似功能:

使用INSERT ALL語法 (Oracle 23c之前版本)

在Oracle 23c之前的版本中,可以使用INSERT ALL語法進行多行插入。以下範例示範如何使用INSERT ALL將資料插入TMP_DIM_EXCH_RT表格:

<code class="language-sql">INSERT ALL
INTO TMP_DIM_EXCH_RT 
(EXCH_WH_KEY, 
 EXCH_NAT_KEY, 
 EXCH_DATE, EXCH_RATE, 
 FROM_CURCY_CD, 
 TO_CURCY_CD, 
 EXCH_EFF_DATE, 
 EXCH_EFF_END_DATE, 
 EXCH_LAST_UPDATED_DATE) 
VALUES
    (1, 1, '28-AUG-2008', 109.49, 'USD', 'JPY', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (2, 1, '28-AUG-2008', .54, 'USD', 'GBP', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (3, 1, '28-AUG-2008', 1.05, 'USD', 'CAD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (4, 1, '28-AUG-2008', .68, 'USD', 'EUR', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (5, 1, '28-AUG-2008', 1.16, 'USD', 'AUD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008'),
    (6, 1, '28-AUG-2008', 7.81, 'USD', 'HKD', '28-AUG-2008', '28-AUG-2008', '28-AUG-2008')
SELECT 1 FROM DUAL;</code>

Oracle 23c 簡化語法

Oracle 23c 引入了一個簡化的多行插入語法:

<code class="language-sql">INSERT INTO t(col1, col2, col3) VALUES
('val1_1', 'val1_2', 'val1_3'),
('val2_1', 'val2_2', 'val2_3'),
('val3_1', 'val3_2', 'val3_3');</code>

此語法允許使用單一語句插入多行。

性能考量

對於大型資料集,Oracle 23c 的簡化語法比INSERT ALL方法更有效率。為了優化性能,建議每次插入的行數不要超過1000行左右。

以上是Oracle中如何有效率地執行多行插入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn