2012-04-18 9 views
1

net mvc 2アプリケーションとSQL Server Expressデータベースです。sqlクエリの速度の問題は、これは通常

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

ユーザーは、このデータを使用して、作成した画像内にある各要素にアイテムを追加できます。基本的には、投稿、フェンス、ゲート項目を使ってどのようなタイプの設定を描いています。

描画要素が追加された後。各要素は、「商品価格」

を有する各ポストフェンスやゲートに加えることができるアイテムの種類は次のとおり

- Labor 
- Material 
- Equipment 
- Subcontracts 

各々は、その価格を計算する式を有します。それぞれの最終的な価格は、アプリケーション予算に追加された価格設定値に基づいています。これは、各々が、これは単に1労働力を計算する式の一種である

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 

計算される方法の一例です。材料、機器、下請けなどの他の要素の式は非常に似ています。私は途中でゲートとフェンスの作品を描いた。この例では

だから、推定値は次のようになります。このジョブの最終価格(小計)私はすべてのフェンス、ゲート、ポスト最終的な価格を追加を見つけること

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** 

各この要素

**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分以上かかることになります。

この情報に基づいて、このデータを処理する通常の時間かどうかを教えてください。

私に提案をするために他の詳細が必要な場合は教えてください。

は、この情報に基づいて、あなたに

答えて

0

をありがとう、これは通常時であれば、あなたは プロセスにこのデータを私に言うことができますか?

これ、あなたのコードのいずれかの詳細なしであなたのenvironemnt anwerには不可能である、データベースのサイズなど

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

プロファイリングを開始して、問題の原因を特定する必要があります。それはデータベースですか、それはデータの処理ですか、グリッドの作成ですか、それともおそらくすべてですか?

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

これがデータベースの場合:データベースに送信されたSQLをプロファイルします。おそらく、より効率的なクエリを作成することができます(1つ1つではなく、1つのステップですべてのデータをロードします。おそらくインデックスを参照する必要がありますか?SQL Server Expressではデータベースが大きすぎますコア、どんなに大規模な物理サーバー)。

あなたは、LINQからSQLへの言及ので、遅延ロードされたデータによって引き起こさN + 1問題に細心の注意を払っています。その場合にはDbLoadOptionsLoadWith上に読んでください。

問題の原因となったものが見つかるまで、同様のコードステップを実行する必要があります。

+0

こんにちは、グリッドは亜音速ORMを使用してデータをロードしていましたグリッド内でこれはかなり遅れていた。グリッドをADO.netに変更し、データベースから直接ロードしました。グリッドの読み込み速度は〜10秒から<1秒になりました。これが他の誰にとっても役立つことを願っています。 – GTITC