Microsoft SQL Server 2008のパフォーマンスに関する質問は、主に実行計画に関するものです。SQL実行プランのキャッシュ
よれば、MSDNに、ストアドプロシージャは、直接SQLクエリに比べてより優れた性能を持っているので、データベースは、準備最適化し、実行計画がで再利用することができるように実行プランをキャッシュでき
後の時間。
私の最初の質問がこのような場合です。私は以前に、パラメータ化されたクエリ(プリペアドステートメント)を使用するときに、実行プランがキャッシュされ、潜在的に異なる値(実行コンテキスト)で実行されます。ストアドプロシージャは依然として効率的でしょうか?その場合、ストアドプロシージャの実行プランはオンデマンドでのみ再作成されるか、キャッシュからクリアされる可能性は低くなりますか?パラメータ化されたクエリはad-hoc queryとして扱われますか?実行計画がキャッシュからクリアされる可能性がより高いですか?
また、私はまだこの分野の初心者であるため、T-SQLでしか動作しない特定のコマンドがあるかどうかは疑問です。 Microsoft SQL Management StudioとADO.NETの両方で、最初の実行で12秒、その後3秒後に完了するクエリがあります。クエリはプレゼンテーションの一部として効果がないと思われます。私の質問では、CHECKPOINT
とDBCC DROPCLEANBUFFERS
の両方をthis articleとして、またOPTION (RECOMPILE)
として使用しています。しかし、クエリがまだ3秒かかるので、少なくとも最初の2つは違いを生じさせていないようです。私の推測では、データキャッシュがクリアされていないためです。キャッシュがクリアされないように見えるアイデア、または最初の実行後にクエリが大幅に高速になる理由についてのアイデアはありますか?
これは私が今考えている質問です。
良い質問 - 私はこの記事をいくつかの記事に分割します。ストアドプロシージャとパラメータ化されたクエリ、複数のクエリを実行するための1つのポストなどについては、おそらく1つの投稿 –
おそらくあなたは正しいです。私の心はスパムではないと考えていました。 :-) – Andy0708
stackoverflowのアイデアは、質問に焦点を当てて答えを集中させるようにすることです - 質問をたくさん載せてサイトを読み込むことを心配しないでください –