0

SQL Server 2008 を使用して重い SQL クエリを作成しています。クエリが 100 行を処理すると、即座に終了しました。クエリが 5000 行を処理する場合、約 1.1 分かかります。

実際の実行計画を使用して、5000 行を処理している間のパフォーマンスを確認しました。クエリには 18 のサブクエリが含まれており、プランに表示されるクエリ コストの割合が大幅に高くなることはありません (例: 約 0%、2%、5%、7%)。最高は11%です。以下のスクリーンショットは、クエリの最上位のプロセスを示しています。(例: 11% の 94%)

以下のスクリーンショットは、クエリの最上位のプロセスを示しています。 (例: 11% の 94%)

Client Statistic Tool も使用しました。試行 10 は 5000 行を処理する場合を示し、試行 9 は 100 行を処理する場合を示します。

ここに画像の説明を入力

クエリが 5000 行を実行するときに遅いプロセスを示すデータ/詳細を見つけることができる場所 (またはどの SQL Server ツール) を教えてもらえますか?

追加: インデックス、キーが追加されます。実際の exe プランにはコメントがなく、各サブクエリのパーセンテージも高くありません。

「Activity Monitor」では、「Recent Expansive Queries」で 1 つのサブクエリの「Average Duration」が 40000 ミリ秒であることがわかりましたが、実際の計画では、このクエリは総プロセスの 5% のコストしかかからないことが示されています。

ありがとう

4

2 に答える 2

0

実行プランの基盤とSQLServerクエリオプティマイザーの動作を学ぶことは、優れたデータベース開発者になるための必須要件であると私は信じていますが、人間はSQLの診断と操作に優れており、ほとんどのツールよりも優れています。ネイティブまたはサードパーティの場合、実際には、SQL Server Management Studioが提供するツールがあり、パフォーマンスを(場合によっては)「自動的に」修正できます。

データベースエンジンチューニングアドバイザー

これには、[クエリ]-> [データベースエンジンチューニングアドバイザーを使用してクエリを分析]の下のリボンメニューからアクセスできます。または(より便利に)クエリを選択して選択を右クリックし、[データベースエンジンチューニングアドバイザーを使用してクエリを分析]を選択すると、クエリで使用されているデータベースオブジェクトのみに自動的にフィルタリングされるというボーナス。

チューニングアドバイザーが実際に行うのは、オブジェクトに追加できるインデックスまたは統計があるかどうかを調査することだけです。次に、それらを「推奨」し、必要に応じて、それらを適用しない、一部、またはすべてを適用できます。

エンプターアラートに注意してください!その推奨事項はすべて、その特定のクエリをより高速に実行することを目的としているため、1つまたは2つのクエリでのみ使用されるが、常に更新する必要があるインデックスを追加した場合の結果について、適切な決定を下すのに役立ちますデータベースにデータを追加するとき。これは「インデックスショットガン」として知られるSQLアンチパターンであり、より有用なインデックスを利用するためにクエリが書き直されることを望んでいるDBAによって一般的に嫌われています。

于 2013-02-24T15:23:19.937 に答える
0

パフォーマンスを確認するには、データベース チューニング アドバイザーおよび/または欠落しているインデックス DMV を使用してから、管理スタジオまたは SQL セントリー プラン エクスプローラーのようなものを使用して実行プランを調べるだけで、変更が必要な場所を示すのに十分なはずです。

実行計画と、物理演算子が論理操作にどのように関係しているかを理解することは、パフォーマンス チューニングの最大の鍵であり、インデックスと統計を十分に理解することです。

パフォーマンスを自動的に修正するツールはないと思います。

于 2013-02-24T15:02:33.183 に答える