2013-04-23 90 views
0

此處的要求是向用戶顯示特定工廠或部件號的預測詳細信息。預測詳細信息來自少量源表,UNION由一個視圖組成。在此視圖上創建物化視圖(MV)以加快數據訪問。在獲得這個MV的記錄後,它以500K +來到。Oracle中的性能問題

我們有一個DOTNET應用程序網頁,用戶從上面的MV中選擇工廠或輸入零件並請求這些過濾器的數據。部分過濾器工作正常,但工廠過濾器幾乎需要20分鐘才能爲某些工廠提取數據。

根據進一步的分析,我發現很少有植物在MV中有超過5萬行。正在檢索50K +記錄是否有問題?

以下是查詢,當Executed運行很快,但同時使用Execute Script選項執行時,需要5-6分鐘才能返回行。

SELECT /*+ hint first_rows(1000) */ 
PLANT,MATERIAL_NBR,SOLD_TO_CODE,SHIP_TO_CODE,SHIP_TO_NAME,SHIP_TO_PLANT,SHIP_TO_LABEL_FMT,ORD_QTY,ALLOC_QTY, 
due_date, PRIME_CNTR,PRIME_UOI,SEC_CNTR,BASE_UOM,ORDER_TYPE,SHIP_POINT,REC_TYPE 
FROM GTCPDBA.VW_FORECAST_REQMNTS_DET 
Where PLANT ='FR10'; 

請建議一些輸入。

+0

訪問腳本所在的路徑是否存在延遲問題?我不明白爲什麼將它作爲腳本執行或僅僅查詢會真正實現差異 – Scotch 2013-04-23 06:05:57

+0

在蟾蜍中有一個名爲「執行腳本」的選項。我的意思是 – MKN 2013-04-23 06:18:15

+0

你是否100%確定你在執行和執行腳本中運行相同的查詢?在一種情況下,您可能正在查詢視圖而不是物化視圖(查詢中的後綴VW_似乎表明這一點) – 2013-04-23 06:59:46

回答

0

您確定要使用first_rows優化器提示嗎?當你的應用程序支持生產者 - 消費者設計模式時,應該使用這一個。即您有後臺線程從DB獲取數據並將其顯示在「厚」客戶端的屏幕上。

類似的東西在3-TIER網絡應用程序中難以實現。