管理 Oracle 中的暫存資料:臨時表指南
Oracle 資料庫提供臨時表作為在會話中管理臨時資料集的機制。 與其他一些資料庫系統不同,在 Oracle 中,只有臨時表中的資料是暫時的;表結構本身作為常規資料庫物件持續存在。
建立全域臨時表
標準方法涉及CREATE GLOBAL TEMPORARY TABLE
。 這將建立一個只能在當前會話中存取的臨時表。
文法:
<code class="language-sql">CREATE GLOBAL TEMPORARY TABLE table_name (column_definition) ON COMMIT {PRESERVE ROWS | DELETE ROWS}</code>
ON COMMIT PRESERVE ROWS
: 資料在交易提交期間持續存在。 ON COMMIT DELETE ROWS
:交易完成後資料將會刪除。 範例:
<code class="language-sql">CREATE GLOBAL TEMPORARY TABLE daily_sales (order_id NUMBER) ON COMMIT PRESERVE ROWS;</code>
利用 Oracle 18c 私有臨時表
Oracle 18c 引入了私有臨時表,提供特定於會話的記憶體儲存。這些表是在單一會話中動態建立和刪除的。
文法:
<code class="language-sql">CREATE PRIVATE TEMPORARY TABLE table_name AS SELECT * FROM existing_table;</code>
範例:
<code class="language-sql">CREATE PRIVATE TEMPORARY TABLE my_temp_sales AS SELECT * FROM sales WHERE sale_date = SYSDATE;</code>
重要注意事項:
雖然方便,但應避免過度使用臨時表。 在許多情況下,內嵌視圖透過將多個 SQL 語句簡化為單一查詢來提供更有效的替代方案。 在 Oracle 中使用臨時表時,仔細考慮效能影響至關重要。
以上是如何在Oracle資料庫中建立和管理臨時表?的詳細內容。更多資訊請關注PHP中文網其他相關文章!