2011-05-04 63 views
2

我想在Oracle 11g中R2從Java代碼

運行幾個SQL腳本當我試圖從查詢運行一個獨立的Java代碼,這些腳本運行到40多分鐘,但是當運行從的SQLDeveloper SQL腳本VS我從4分鐘內運行的sqldeveloper客戶端運行相同

可能是什麼原因?


編輯

好吧,我做了一些更新腳本,調用

是我做的一個字符串連接

+1

你在執行什麼樣的語句和多少條語句? (SELECTs,INSERTs,UPDATEs) – 2011-05-04 07:18:49

+0

您發送的數據量(寫入語句)以及要檢索的行數。 – 2011-05-04 07:19:34

+1

你沒有向我們展示的一切:你的代碼。我懷疑你在緊密的循環中做了一些像串連一樣可怕的事情。 – Bobby 2011-05-04 07:20:12

回答

1

執行從Java中的SQL一個PL/SQL程序,你執行以下步驟:

  • 打開連接(700ms)
  • 準備語句(80毫秒)
  • 執行語句(10毫秒)

時機的例子是從我的一個簡單的聲明環境。你的環境會有所不同,但時間的比例也是相似的。關鍵是打開連接可能比實際執行語句要貴得多。

檢查您的代碼是否未打開連接並在循環中準備語句。這可能佔您的時間的很大一部分,並解釋爲什麼腳本比使用sql developer啓動時慢。您應該打開連接一次,然後重新使用連接。如果你沒有上傳大量的數據,那麼代碼在數據庫服務器上運行的時間長度是相同的,無論它是從sql開發者還是其他客戶端發起的。