-1

これがばかげた質問かもしれないことはわかっていますが、初心者の私はこの質問を専門家に尋ねて疑問を解消する必要があります. Entity Framework を使用して複数のテーブルを結合してデータベースからデータをクエリすると、SQL クエリが作成され、このクエリがデータベースに発行されてレコードが取得されます。

「.net コードから大きなクエリを実行すると、ネットワーク トラフィックが増加し、パフォーマンスが低下することがわかっています。したがって、大きなクエリを記述する代わりに、ストアド プロシージャを作成して実行すると、パフォーマンスが大幅に向上します。」

私の質問は、パフォーマンスの低下につながる大きなクエリを作成するという同じ古い概念を EF が使用していないかどうかです。

専門家は私の疑問を解消してください。ありがとう。

4

1 に答える 1

1

一般的な神話に反して、ストアド プロシージャは通常のクエリよりも高速ではありません。ストアド プロシージャ (実行プランのキャッシュ、プリコンパイル) を使用すると、パフォーマンスがわずかに向上する可能性がありますが、最新のキャッシュ環境と新しいクエリ オプティマイザーおよびパフォーマンス分析エンジンを使用すると、メリットはせいぜいわずかです。これを、これらの潜在的な最適化がクエリ結果生成プロセスのほんの一部であり、最も時間のかかる部分がデータの実際の収集、シーク、ソート、マージなどであるという事実と組み合わせると、これらのストアド プロシージャの利点は実に明白です。無関係。

さて、もう一点。クエリのテキストに 500 バイトを作成するのに対し、ストアド プロシージャの名前に 50 バイトを作成することで、100 M b / s リンクに影響を与えることは絶対にありません。

于 2013-09-01T02:04:03.207 に答える