0

ここでの要件は、特定の工場または部品番号の予測の詳細をユーザーに提示することです。予測の詳細は、いくつかのソース テーブルから取得され、1 つの VIEW によって UNIONed されています。データ アクセスを高速化するために、このビューにマテリアライズド ビュー (MV) が作成されます。この MV で記録的なカウントを行った後、500K+ に到達します。

ユーザーがプラントを選択するか、部品を入力し、上記の MV からこれらのフィルターのデータを要求する DOTNET アプリケーション Web ページがあります。パーツ フィルターは正常に動作していますが、プラント フィルターは特定のプラントのデータを取得するのに約 20 分かかります。

さらに分析したところ、MV に 50K 行を超えるプラントはほとんどないことがわかりました。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';

いくつかの入力を提案してください。

4

1 に答える 1

0

first_rows オプティマイザ ヒントを使用してもよろしいですか? これは、アプリケーションがプロデューサー/コンシューマー デザイン パターンをサポートしている場合に使用する必要があります。つまり、DB からデータをフェッチして「シック」クライアントの画面に表示するバックグラウンド スレッドがあります。

そのようなことは、3 層 Web アプリケーションではほとんど達成できません。

于 2013-04-23T07:32:19.127 に答える