1

SQL Server Express データベースを使用した net mvc 2 アプリケーション。

私のアプリケーションは、フェンスの設置プロジェクトを見積もるために使用されます。ユーザーは、xml ファイルを出力するフラッシュ描画ですべてのフェンス アイテムを描画します。

このデータを使用して、ユーザーは作成した画像内の各要素にアイテムを追加できます。基本的に、彼らはポスト、フェンス、ゲート アイテムを使用して、あらゆるタイプの構成を描画します。

描画要素が追加された後。各要素には「アイテム価格」があります

各ポスト フェンスまたはゲートに追加できるアイテムの種類は次のとおりです。

- Labor
- Material
- Equipment 
- Subcontracts

それぞれに、その価格を計算する式があります。それぞれの最終的な価格は、アプリケーションの予算に追加された価格の値から決まります。これは、それぞれの計算方法の例です

Labour1 = qty(user enters this) * unit cost * profit (comes from budget)

unit cost = hour rate(from budget) - discount % (user enters it) * labor burden %(user enters it) * Shipping %(User enters it) * Tax (comes from main application tax setup)
* overhead markup % ( from budget) * profit (from budget) = item price 

これは、たった 1 つの労力を計算する式のようなものです。材料、設備、下請けなどの他の要素の計算式は非常に似ています。

したがって、見積もりは次のようになります。

この例では、真ん中に門のあるフェンスを描きました。この図から作成されるデータは次のようになります。

Fence = F1 
Gate= G1
Post= P1
Post = P2
Post = P3
Post = P4

この仕事の最終価格(小計)を見つけるには、すべてのフェンス、ゲートを追加し、最終価格を掲載します。

**Fence F1**

Material = $120
Material 2= 115
Labor 1= $134
Labor 2= $100
Equipment 1= $100
Equipment 2 = $150
Subcontract 1 = $120
Subcontract 2 = $100

**TOTAL FENCE ITEMS= $939**

ゲート G1

Mat 1= $100
Labor 1= $200
Equip 1= $400
Subcontract 1= $250

**TOTAL GATES= $950**

次に、次の投稿 EACH にはこの要素があります

**P1, P2 P3 P4**

Material 1 = 250 (x4)
equipment 1= $250 (x4)
labor 1 = $100 (x4)
subcontract 1= $200 (x4)

**Total POSTS = $3200**

Total Estimate Price = 939 + 950 +3200 = $5,089

見積もりには、複数のフェンス ゲートまたは支柱を含めることができます。ただし、基本的には、フェンス ゲートまたはポストに対して、材料、設備、労働力、および下請け業者をいくつでも追加できます。

前の例は典型的な例にすぎませんが、他の見積もりでは、合計で最大 30 または 40 のアイテムが含まれる場合があります。

顧客情報とその他の一般的な列をロードする jqgrid があり、最後の列は価格です。

現在、上記のグリッドの例のように見える約 50 の見積もりがある場合、読み込みに約 45 秒かかります。

年間 500 件以上の見積もりがそのグリッドに表示される予定です。

そのため、このグリッドを 500 で一度にロードすると、5 分以上かかります。

この情報に基づいて、このデータを処理する通常の時間であるかどうか教えていただけますか?

提案をするために他の詳細が必要な場合はお知らせください。

ありがとうございました

4

1 に答える 1

0

この情報に基づいて、このデータを処理する通常の時間であるかどうか教えていただけますか?

これは、コード、環境、データベースのサイズなどの詳細なしでは答えられません。

しかし、私には長い時間のように思えます。

問題の原因となっている部分を特定するには、プロファイリングを開始する必要があります。データベースなのか、データの処理なのか、グリッドの作成なのか、それともすべてなのか。

そのため、プロセス全体を分割して、遅延の原因を確認してください。

データベースの場合: データベースに送信された SQL をプロファイリングします。おそらく、より効率的なクエリを作成できます (すべてのデータを 1 つずつではなく 1 ステップでロードします。おそらく、インデックスを確認する必要がありますか? おそらく、データベースが sql server Express に対して大きすぎる (メモリ制限があり、1 つしか使用しません)物理サーバーの規模に関係なく)。

linq-to-sql について言及されているので、遅延ロードされたデータによって引き起こされる n+1 問題に細心の注意を払ってください。DbLoadOptions LoadWithその場合は読み進めてください。

問題の原因が見つかるまで、コードで行う必要がある同様の種類の手順

于 2012-04-18T07:53:41.547 に答える