2012-09-13 77 views
0

我目前正在審查使用Oracle 11g數據庫的.net解決方案上的數據訪問代碼。我發現一些代碼的功能是使用從數據庫中獲得的數據填充.net集合。爲了實現此目的,代碼在數據訪問層使用以下步驟:使用全局臨時表可能會妨礙性能?

  1. 將輸入數據插入到全局臨時表中。這些數據來自前端。前端接收一個字符串並在全局臨時表上創建一個DML插入語句,然後使用OracleCommand.ExecuteNonQuery()執行該語句。
  2. 執行預定的程序。此過程使用上一步填充的全局臨時表來生成輸出。
  3. 閱讀從全局臨時表中的數據在步驟2中

這是我第一次看到類似的東西。雖然我還沒有看到這個代碼正在運行,但我認爲這段代碼可能會有一些性能和可維護性問題。通常我已經看過這個步驟,通過編寫一個實現這個功能的過程而不需要使用全局臨時表。

  1. 第一種方法會產生性能問題嗎?
  2. 你能否引用任何自動的來源與第一種方法爭論?
+0

「臨時表」是指「臨時表」(即全局臨時表)嗎?或者你的意思是一張表隨着時間的推移存儲同一行的不同版本?或者你是否可能使用嵌套表引用PL/SQL集合? –

+0

@JustinCave對不起...我已經更正了這個問題 – JPCF

+0

從哪裏插入全局臨時表的數據是從哪裏來的?是否有一些查詢正在執行以檢索數據?還是數據被輸入到前端? –

回答

1

全局臨時表的執行速度與普通表相同。它們被寫入磁盤,包含塊,被加載到緩衝區緩存等中。

它們只具有一些事務功能,consult docs

如何實施應用程序,是您的選擇。在處理數據之前將數據加載到表中,如果數據很大並且不能完全保留在內存中,這可能是一種策略。 而且......你可以測試這些場景。