web-dev-qa-db-ja.com

Explain Planのコスト、カーディナリティ、およびバイトの意味は何ですか?

これは単純なクエリです:select * from customers

このクエリをPL/SQL Developerで記述してF5キーを押すと、Explain Planが表示されますが、コスト、カーディナリティ、およびバイトが何を表しているのかわかりません。

4
M.Minbashi

から http://www.Oracle.com/technetwork/database/bi-datawarehousing/twp-explain-the-explain-plan-052011-393674.pdf

コストとは?

Oracle Optimizerはコストベースのオプティマイザです。 SQLステートメント用に選択された実行プランは、オプティマイザによって検討される多くの代替実行プランの1つにすぎません。オプティマイザーは、コストが最も低い実行プランを選択します。コストは、そのプランの推定リソース使用量を表します。コストが低いほど、計画の効率は高くなります。オプティマイザのコストモデルは、クエリで使用されるIO、CPU、およびネットワークリソースを考慮しています。図8:コストは実行プランの5番目の列に表示されますプラン全体(行0に示されています)のコストと個々の操作が実行プランに表示されます。ただし、調整または変更できるものではありません。コストは内部単位であり、プランの比較を可能にするためにのみ表示されます。

データベースパフォーマンスチューニングガイド も確認できます。

この列の値には、特定の測定単位はありません。これは、実行計画のコストを比較するために使用される加重値にすぎません。この列の値は、CPU_COST列とIO_COST列の関数です。

したがって、COSTはCPUとIOコストの関数です。

プランテーブルの列の説明については、セクション12.10を参照してください。

https://docs.Oracle.com/cd/E11882_01/server.112/e41573/ex_plan.htm#PFGRF009

コストは、特定の計画を介してクエリを実行するためにオプティマイザが推定する作業量です。オプティマイザは、通常、低コストの計画を優先します。

コストはいくつかの異なる要因によって決定されますが、テーブル統計は最大のものの1つです。

カーディナリティは、オプティマイザが計画ステップで処理することを推測する行の数です。統計が古い、欠落している、または不完全である場合-これは非常に間違っている可能性があります。オプティマイザが5行(カーディナリティ)を表示する場所を探しますが、実際には50,000行あります。

バイトはカーディナリティーと同じ概念ですが、処理されるデータと表の行の完全な点で異なります。

これは非常に深いトピックであり、積極的な学習と経験が必要です。多くの人が行く場所のアイデアを提供できると思います。私は個人的に楽しんでいます マリアのブログ。 彼女はオプティマイザの以前の製品マネージャです。

6
thatjeffsmith