クエリコストを読み取るにはどうすればよいですか?それは常にパーセンテージですか?


34

現在、SQL 70-433(Microsoft認定試験)を勉強していますが、「クエリコスト」パフォーマンスメトリックについて非常に混乱しています。

Googleで見つけたドキュメントによると、クエリコストは割合の数字であり、その一部が占めるバッチ全体の割合を表します。私は特定のクエリの絶対的なメリットに興味があるので、これはすでに少し奇妙に思えました。それは、それと一緒に表示される他のクエリに対するメリットよりもむしろメリットです。

しかし、2つの代替クエリを並べて「バッチ」として実行し、コストが50%未満の方が勝者になることを期待しているのかもしれません。

しかし、MicrosoftのSQL 70-433トレーニングキットのレッスン6の第6章でのクエリコストの議論は、これとは何の関係もないようです。

次に例を示します。2つの相関サブクエリを含むクエリを示し、サブクエリをOUTER APPLYに置き換えることでクエリを改善します。結果:「このクエリのコストは約76ですが、最初のクエリのコストはその2倍、約151です。」その後、クエリをさらに改善し、コストを76から3.6に削減します。これらの数値がパーセンテージであることを意味するのではなく、他のクエリを参照せずに、スタンドアロンオブジェクトとしてのクエリに関連する絶対的な数値であることを意味します。とにかく、最初のクエリのコストを151%にするにはどうすればよいでしょうか?

この章の後半では、3つの部分からなる実行計画のスクリーンショットを示しています。最初の部分は「コスト:0%」、2番目の部分は「コスト:1%」、最後の部分は「コスト:99%」ですが、スクリーンショットの下のテキスト(本自体)は「このクエリのコストは0.56」です。私はそれらが他の種類のコストを意味すると推測していますが、他の場所でそれを参照することはできません。

誰か助けてもらえますか?私は完全に混乱しています。


PS彼らが実行計画に示されたパーセンテージ以外の何かを指していると仮定すると...どうやってSSMSを入手して、彼らが引用している数字を見せてくれますか?SET STATISTICS TIME ONのようなものが必要なのですが、[メッセージ]タブに「コスト」の数値を表示する他のコマンドが必要ですか?

回答:


43

クエリコストは、実行プランで「推定サブツリーコスト」として報告されます。これはのような絶対的な数字1.5です。Conor Cunninghamは、SQLBitsプレゼンテーションで、元々はSQL Server 7日間で特定のMicrosoft従業員のマシン(「Nick's Machine」)で実行するのにかかった秒数について言及したと述べました。

ここに画像の説明を入力してください

しかし今では、全体的なコストの単位なしの尺度として解釈する必要があります。

実行計画はツリーです。ツリー内の各イテレータには、推定CPUコストと推定IOコストが与えられ、これらを合計して全体のコストを取得します(相対的な重みは、文書化されていないDBCCコマンドで調整できます)。推定サブツリーコストには、イテレータ自体とそのすべての子孫のコストが含まれます。使用された原価計算式の例を見るには、この記事をご覧ください。

SSMSのクエリ全体の推定コストを決定するにSELECTは、グラフィカルプランの左側にあるルートイテレータ(イテレータなど)を選択し、SSMSプロパティウィンドウでこのメトリックを確認します。

複数のクエリを実行する場合(同じバッチであるかどうかに関係なく)、これらの値をすべて加算し、予想どおりにパーセンテージを計算することにより、パーセンテージが計算されます。

実際の実行計画でも、このコストの数値は推定に基づいているため、これを使用して2つの異なるクエリの相対的なメリットを比較することは、推定が不正確な場合は非常に間違っている可能性があります。


ありがとう、それは本当に助かります。そして、まったく明らかではありません!なぜその数字がより明確にフラグ付けされないのだろうか?

4
私はいつも測定単位について疑問に思っていました。私はそれを「SQLダラー」であると人々に(コミカルに)説明してきました。クエリコストが1.0の場合、これは1杯のコーヒーに1ドルを支払うようなものです。悪くない価格。あなたはカップに300ドルを払うでしょうか?とんでもない!
datagod
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.